diff --git a/~dev_rating/application/classes/Account.php b/~dev_rating/application/classes/Account.php
index fcf48e90e7d303d328637b1835788c3523cbbe93..3f5b660d3aaa47a477062e42b4b900a738452f66 100644
--- a/~dev_rating/application/classes/Account.php
+++ b/~dev_rating/application/classes/Account.php
@@ -45,7 +45,6 @@ class Account {
 
     protected static $_instance;
     protected $_config;
-    protected $_model;
 
     /**
      * Вовзращает экземпляр класса (singleton-паттерн)
@@ -61,7 +60,6 @@ class Account {
 
     private function __construct($config = array()) {
         $this->_config = $config;
-        $this->_model = new Model_Account;
     }
 
     private function generateActivationCode() {
@@ -71,30 +69,30 @@ class Account {
 
     public function createTeacher($lastName, $firstName, $secondName, $degreeID, $departmentID) {
         $code = $this->generateActivationCode();
-        $response = $this->_model->createTeacher($lastName, $firstName, $secondName, $degreeID, $departmentID, $code);
+        $response = Model_Account::createTeacher($lastName, $firstName, $secondName, $degreeID, $departmentID, $code);
         return $response == -1 ? -1 : $code;
     }
 
     public function createTeacherByDepName($lastName, $firstName, $secondName, $departmentName, $facultyID) {
         $code = $this->generateActivationCode();
-        $response = $this->_model->createTeacherByDepName($lastName, $firstName, $secondName, $departmentName, $facultyID, $code);
+        $response = Model_Account::createTeacherByDepName($lastName, $firstName, $secondName, $departmentName, $facultyID, $code);
         return $response == -1 ? -1 : $code;
     }
 
     public function createStudent($lastName, $firstName, $secondName, $grade, $groupNum, $facultyID) {
         $code = $this->generateActivationCode();
-        $response = $this->_model->createStudent($lastName, $firstName, $secondName, $grade, $groupNum, $facultyID, $code);
+        $response = Model_Account::createStudent($lastName, $firstName, $secondName, $grade, $groupNum, $facultyID, $code);
         return $response == -1 ? -1 : $code;
     }
 
     public function createStudentEx($lastName, $firstName, $secondName, $grade, $groupNum, $degree, $spec, $facultyID) {
         $code = $this->generateActivationCode();
-        $response = $this->_model->createStudentEx($lastName, $firstName, $secondName, $grade, $groupNum, $degree, $spec, $facultyID, $code);
+        $response = Model_Account::createStudentEx($lastName, $firstName, $secondName, $grade, $groupNum, $degree, $spec, $facultyID, $code);
         return $response == -1 ? -1 : $code;
     }
 
     public function createSubject($name, $abbr, $facultyID) {
-        return $this->_model->createSubject($name, $abbr, $facultyID);
+        return Model_Account::createSubject($name, $abbr, $facultyID);
     }
 
     private function checkTokenLifetime($creationDate) {
@@ -104,7 +102,7 @@ class Account {
     }
 
     public function checkToken($token) {
-        $recovery = $this->_model->getRecoveryInfoByToken($token)[0];
+        $recovery = Model_Account::getRecoveryInfoByToken($token)[0];
         $response = true;
 
         if ($recovery['isUsed']) {
@@ -112,7 +110,7 @@ class Account {
         } else {
             $date = strtotime($recovery['Date']);
             if ($this->checkTokenLifetime($date)) {
-                $this->_model->useRecoveryToken($recovery['Token']);
+                Model_Account::useRecoveryToken($recovery['Token']);
                 $response = false;
             }
         }
@@ -122,7 +120,7 @@ class Account {
     public function createRecoveryRequest($email) {
         $requestToken = sha1($email.time().Cookie::$salt);
 
-        $UserFullName = $this->_model->createRecoveryToken($email, $requestToken);
+        $UserFullName = Model_Account::createRecoveryToken($email, $requestToken);
         if (!$UserFullName) {
             throw HTTP_Exception::factory(403, 'Пользователь с таким e-mail адресом не зарегистрирован в системе!');
         }
@@ -147,33 +145,33 @@ class Account {
     }
 
     public function changePasswordByToken($token, $password) {
-        $recovery = $this->_model->getRecoveryInfoByToken($token)[0];
+        $recovery = Model_Account::getRecoveryInfoByToken($token)[0];
         $this->changePassword($recovery['AccountID'], $password);
-        $this->_model->useRecoveryToken($token);
+        Model_Account::useRecoveryToken($token);
     }
 
     public function loginExists($login) {
-        $login_count = $this->_model->getAccNumByLogin($login);
+        $login_count = Model_Account::getAccNumByLogin($login);
         return $login_count > 0;
     }
 
     public function mailExists($email) {
-        $email_count = $this->_model->getAccNumByMail($email);
+        $email_count = Model_Account::getAccNumByMail($email);
         return $email_count > 0;
     }
 
     public function changeLogin($id, $newLogin) {
-        $response = $this->_model->changeLogin($id, $newLogin);
+        $response = Model_Account::changeLogin($id, $newLogin);
         return $response != -1;
     }
 
     public function changeEMail($id, $newEMail) {
-        $response = $this->_model->changeMail($id, $newEMail);
+        $response = Model_Account::changeMail($id, $newEMail);
         return $response != -1;
     }
 
     public function changePassword($id, $newPassword) {
-        $response = $this->_model->changePassword($id, $newPassword);
+        $response = Model_Account::changePassword($id, $newPassword);
         return $response != -1;
     }
 }
\ No newline at end of file
diff --git a/~dev_rating/application/classes/Model/Account.php b/~dev_rating/application/classes/Model/Account.php
index 87607624c00ab775a2b2496cc7fff1718fd71473..321c78c4b04ec1d86043d8224fd68ccc1bb0fa90 100644
--- a/~dev_rating/application/classes/Model/Account.php
+++ b/~dev_rating/application/classes/Model/Account.php
@@ -2,7 +2,7 @@
 
 class Model_Account extends Model
 {
-    public function setHashKey($key)
+    public static function setHashKey($key)
     {
         $key = Database::instance()->escape($key);
         $sql = "SELECT `SetSettings`('HashKey', '', $key) AS `Key`;";
@@ -10,14 +10,14 @@ class Model_Account extends Model
         return $res->get('Key');
     }
 
-    public function getHashKey()
+    public static function getHashKey()
     {
         $sql = "CALL `GetSettings`('HashKey');";
         $key = DB::query(Database::SELECT, $sql)->execute();
         return $key->get('ValS');
     }
 
-    public function getMaintenanceInfo()
+    public static function getMaintenanceInfo()
     {
         $sql = "CALL `GetSettings`('maintenance_active');";
         $key = DB::query(Database::SELECT, $sql)->execute();
@@ -28,7 +28,7 @@ class Model_Account extends Model
         return $result;
     }
 
-    public function checkAuth($login, $password) {
+    public static function checkAuth($login, $password) {
         $db = Database::instance();
         $login = $db->escape($login);
         $password = $db->escape($password);
@@ -38,8 +38,7 @@ class Model_Account extends Model
     }
 
 
-    public function ChangeTeacherInfo($id, $lastName, $firstName, $secondName, $degreeID, $departmentID)
-
+    public static function ChangeTeacherInfo($id, $lastName, $firstName, $secondName, $degreeID, $departmentID)
     {
         $db = Database::instance();
         $lastName = $db->escape($lastName);
@@ -51,7 +50,7 @@ class Model_Account extends Model
     }
 
 
-    public function createTeacher($lastName, $firstName, $secondName, $degreeID, $departmentID, $activationCode)
+    public static function createTeacher($lastName, $firstName, $secondName, $degreeID, $departmentID, $activationCode)
     {
         $db = Database::instance();
         $lastName = $db->escape($lastName);
@@ -64,7 +63,7 @@ class Model_Account extends Model
     }
 
 
-    public function createTeacherByDepName($lastName, $firstName, $secondName, $departmentID, $facultyID, $activationCode)
+    public static function createTeacherByDepName($lastName, $firstName, $secondName, $departmentID, $facultyID, $activationCode)
     {
         if ($departmentID == '') {
             return -1;
@@ -81,7 +80,7 @@ class Model_Account extends Model
         return $key->get('UserID');
     }
 
-    public function createStudent($lastName, $firstName, $secondName, $grade, $groupNum, $facultyID, $activationCode)
+    public static function createStudent($lastName, $firstName, $secondName, $grade, $groupNum, $facultyID, $activationCode)
     {
         $db = Database::instance();
         $lastName = $db->escape($lastName);
@@ -93,7 +92,7 @@ class Model_Account extends Model
         return $key->get('UserID');
     }
 
-    public function createStudentEx($lastName, $firstName, $secondName, $gradeNum, $groupNum, $degree, $specialization, $facultyID, $activationCode)
+    public static function createStudentEx($lastName, $firstName, $secondName, $gradeNum, $groupNum, $degree, $specialization, $facultyID, $activationCode)
     {
         $db = Database::instance();
         $lastName = $db->escape($lastName);
@@ -107,7 +106,7 @@ class Model_Account extends Model
         return $key->get('UserID');
     }
 
-    public function createSubject($name, $abbr, $facultyID)
+    public static function createSubject($name, $abbr, $facultyID)
     {
         $db = Database::instance();
         $name = $db->escape($name);
@@ -131,7 +130,7 @@ class Model_Account extends Model
         return $query[0];
     }
 
-    public function changeMail($id, $mail)
+    public static function changeMail($id, $mail)
     {
         $mail = Database::instance()->escape($mail);
         $sql = "SELECT `ChangeAccountData`('$id', $mail, 'email') AS Num;";
@@ -139,7 +138,7 @@ class Model_Account extends Model
         return $query->get('Num');
     }
 
-    public function changeLogin($id, $login)
+    public static function changeLogin($id, $login)
     {
         $login = Database::instance()->escape($login);
         $sql = "SELECT `ChangeAccountData`('$id', $login, 'login') AS Num;";
@@ -147,7 +146,7 @@ class Model_Account extends Model
         return $query->get('Num');
     }
 
-    public function changePassword($id, $password)
+    public static function changePassword($id, $password)
     {
         $password = Database::instance()->escape($password);
         $sql = "SELECT `ChangeAccountData`('$id', $password, 'password') AS Num;";
@@ -155,7 +154,7 @@ class Model_Account extends Model
         return $query->get('Num');
     }
 
-    public function getAccNumByLogin($login)
+    public static function getAccNumByLogin($login)
     {
         $login = Database::instance()->escape($login);
         $sql = "SELECT `CheckAccountExistence`($login, 'login') AS Num;";
@@ -163,7 +162,7 @@ class Model_Account extends Model
         return $res->get('Num');
     }
 
-    public function getAccNumByMail($email)
+    public static function getAccNumByMail($email)
     {
         $email = Database::instance()->escape($email);
         $sql = "SELECT `CheckAccountExistence`($email, 'email') AS Num;";
@@ -171,7 +170,7 @@ class Model_Account extends Model
         return $res->get('Num');
     }
 
-    public function isActivationCodeValid($code)
+    public static function isActivationCodeValid($code)
     {
         $code = Database::instance()->escape($code);
         $sql = "SELECT `CheckAccountExistence`($code, 'code') AS Num;";
@@ -181,7 +180,7 @@ class Model_Account extends Model
         return $count == 1;
     }
 
-    public function createRecoveryToken($email, $token)
+    public static function createRecoveryToken($email, $token)
     {
         $db = Database::instance();
         $email = $db->escape($email);
@@ -191,7 +190,7 @@ class Model_Account extends Model
         return $res->get('UserName');
     }
 
-    public function getRecoveryInfoByEMail($email)
+    public static function getRecoveryInfoByEMail($email)
     {
         $email = Database::instance()->escape($email);
         $sql = "CALL GetRecoveryInfoByEMail($email);";
@@ -199,7 +198,7 @@ class Model_Account extends Model
         return $query;
     }
 
-    public function getRecoveryInfoByToken($token)
+    public static function getRecoveryInfoByToken($token)
     {
         $token = Database::instance()->escape($token);
         $sql = "CALL GetRecoveryInfoByToken($token);";
@@ -207,7 +206,7 @@ class Model_Account extends Model
         return $query;
     }
 
-    public function useRecoveryToken($token)
+    public static function useRecoveryToken($token)
     {
         $token = Database::instance()->escape($token);
         $sql = "SELECT `UseRecoveryToken`($token) AS Num;";
@@ -215,7 +214,7 @@ class Model_Account extends Model
         return $email->get('Num');
     }
 
-    public function activateAccount($login, $password, $email, $code)
+    public static function activateAccount($login, $password, $email, $code)
     {
         $db = Database::instance();
         $login = $db->escape($login);
@@ -224,20 +223,14 @@ class Model_Account extends Model
         $code = $db->escape($code);
         $sql = "SELECT `ActivateAccount` ($code, $login, $email, $password) AS `Num`; ";
         $res = DB::query(Database::SELECT, $sql)->execute();
-        foreach ($res as $value) {
-            $id = $value['Num'];
-        }
-        return $id;
+        return $res->get('Num');
     }
 
-    public function getCurSemesterID() {
+    public static function getCurSemesterID() {
         $sql = "CALL `GetSettings`('SemesterID');";
         $res = DB::query(Database::SELECT, $sql)->execute();
         $id = null;
-        foreach ($res as $value) {
-            $id = $value['Val'];
-        }
-        return $id;
+        return $res->get('Val');
     }
 
 }
\ No newline at end of file
diff --git a/~dev_rating/application/classes/User.php b/~dev_rating/application/classes/User.php
index 181fe2902c3d2118ba0291bf6526d578a6b99419..f034f4f46b5026041e40c6a558cdaf6f4a61570e 100644
--- a/~dev_rating/application/classes/User.php
+++ b/~dev_rating/application/classes/User.php
@@ -33,7 +33,6 @@ class User implements ArrayAccess
     protected static $_instance;
     protected $_session;
     protected $_config;
-    protected $_model;
     protected $_userInfo;
     protected static $_flag;
 
@@ -55,14 +54,13 @@ class User implements ArrayAccess
         $this->_config = $config;
         $this->_session = Session::instance();
 
-        $this->_model = new Model_Account;
-        $this->_config['hash_key'] = $this->_model->getHashKey();
+        $this->_config['hash_key'] = Model_Account::getHashKey();
         $this->_config['hash_method'] = 'sha256';
         $isSignedIn = $this->isSignedIn();
 
         if ($isSignedIn) {
             $id = $this->_session->get('ID');
-            $this->_userInfo = $this->getInfoFromDB($id, $this->_model->getCurSemesterID());
+            $this->_userInfo = $this->getInfoFromDB($id, Model_Account::getCurSemesterID());
 
             if (self::$_flag != true) {
                 $this->_session->regenerate();
@@ -117,7 +115,7 @@ class User implements ArrayAccess
      * и false, если данные являются некорректными.
      */
     public function signIn($login, $password) {
-        $id = (int)$this->_model->checkAuth($login, $password);
+        $id = (int)Model_Account::checkAuth($login, $password);
         if ($id === -1) {
             return false;
         } else {
@@ -131,7 +129,7 @@ class User implements ArrayAccess
         $passwordHash = $this->hash($passhash . $this->_config['hash_key']);
         Cookie::set('userhash', $passwordHash);
 
-        $semester = $this->_model->getCurSemesterID();
+        $semester = Model_Account::getCurSemesterID();
         $this->_userInfo = $this->getInfoFromDB($id, $semester);
         $this->_session->regenerate();
         $this->_session->set('ID', $id);
@@ -210,7 +208,7 @@ class User implements ArrayAccess
         if (!$this->checkPassword($old))
             return false;
 
-        $this->_model->changePassword($this->ID, $new);
+        Model_Account::changePassword($this->ID, $new);
         $passhash = $this->hash($this->hash($new) . $this->_config['hash_key']);
         $this->_session->set('PasswordHash', $passhash);
         Cookie::set('userhash', $passhash);
@@ -221,7 +219,7 @@ class User implements ArrayAccess
         if (!$this->isSignedIn() || Account::instance()->loginExists($login))
             return false;
 
-        $this->_model->changeLogin($this->ID, $login);
+        Model_Account::changeLogin($this->ID, $login);
         return true;
     }
 
@@ -238,7 +236,7 @@ class User implements ArrayAccess
     public function completeChangeMail($token) {
         $email = $this->_session->get('NewMail_Adress');
         if ($token == $this->_session->get('NewMail_Token') AND !Account::instance()->mailExists($email)) {
-            $this->_model->changeMail($this->ID, $email);
+            Model_Account::changeMail($this->ID, $email);
             return true;
         } else {
             return false;
@@ -247,7 +245,7 @@ class User implements ArrayAccess
 
     public function changeProfile($data) {
         if ($this->Type == 'teacher') {
-            $this->_model->ChangeTeacherInfo($this['TeacherID'], $data['lastName'], $data['firstName'], $data['secondName'], $data['jobPositionID'], $data['departmentID']);
+            Model_Account::ChangeTeacherInfo($this['TeacherID'], $data['lastName'], $data['firstName'], $data['secondName'], $data['jobPositionID'], $data['departmentID']);
         }
     }
 
@@ -268,8 +266,8 @@ class User implements ArrayAccess
     }
 
     private function getInfoFromDB($id, $semesterID) {
-        $info = $this->_model->getPersonalInfo($id, $semesterID);
-        $info += $this->_model->getAccountInfo($id);
+        $info = Model_Account::getPersonalInfo($id, $semesterID);
+        $info += Model_Account::getAccountInfo($id);
         return $info;
     }
 
@@ -284,19 +282,19 @@ class User implements ArrayAccess
     }
 
     public function offsetSet($offset, $value) {
-        if (array_key_exists($offset, $this->_userInfo)) {
+        if ($this->_userInfo && array_key_exists($offset, $this->_userInfo)) {
             $this->_userInfo[$offset] = $value;
         } elseif (isset($offset, $this->_session)) {
             $this->_session[$offset] = $value;
-        } else {
+        } else { // TODO: _userInfo may be null
             $this->_userInfo[$offset] = $value;
         }
     }
 
     public function offsetGet($offset) {
-        if (array_key_exists($offset, $this->_userInfo))
+        if ($this->_userInfo && array_key_exists($offset, $this->_userInfo))
             return $this->_userInfo[$offset];
-        if (isset($offset, $this->_session))
+        else if (isset($offset, $this->_session))
             return $this->_session[$offset];
 
         throw new ErrorException('No such field');
@@ -322,7 +320,7 @@ class User implements ArrayAccess
     protected function hash($str) {
         if (!$this->_config['hash_key']) {
             $this->_config['hash_key'] = $key = md5(time() . Request::$client_ip);
-            $this->_model->setHashKey($key);
+            Model_Account::setHashKey($key);
         }
         return hash_hmac($this->_config['hash_method'], $str, $this->_config['hash_key']);
     }