diff --git a/services.module b/services.module
index e327cef..7fba5c8 100644
--- a/services.module
+++ b/services.module
@@ -335,24 +335,8 @@ function services_services_authentication_info() {
  * @return void
  */
 function _services_sessions_authenticate_call() {
-  $arg = func_get_args();
   global $user;
-  $original_user = services_get_server_info('original_user');
-  //If the user is logged in already and the callback contains the string login
-  //we need to set it to the original user so that the already logged in as @user message
-  //is displayed
-  if (strpos($arg[1]['callback'], 'login') !== FALSE) {
-    if($original_user->uid != 0) {
-      $user = $original_user;
-    }
-  }
-  //For every callback that has nothing to do with login we need to
-  //set it to the original user so that they are no longer anonymous
-  
-  if (strpos($arg[1]['callback'], 'login') === FALSE) {
-    // The account should be restored to the session's user.
-    $user = $original_user;
-  }
+  $user = services_get_server_info('original_user');
 }
 
 /**
diff --git a/services.runtime.inc b/services.runtime.inc
index 9e0f5f0..cd7e40a 100644
--- a/services.runtime.inc
+++ b/services.runtime.inc
@@ -104,13 +104,10 @@ function services_controller_execute($controller, $args = array(), $options = ar
   }
 
   $original_user = $user;
-  
-  if (strpos($controller['callback'], 'login') !== FALSE && strpos($controller['callback'], 'logout') !== FALSE) {
-    $old_state = drupal_save_session();
-    drupal_save_session(FALSE);
-  }
+  $old_state = session_save_session();
+  session_save_session(FALSE);
   $user = drupal_anonymous_user();
-  $user->timestamp = time();
+
   services_set_server_info('original_user', $original_user);
 
   // Check authentication.
@@ -171,8 +168,9 @@ function services_controller_execute($controller, $args = array(), $options = ar
   $controller['__drupal_alter_by_ref'] = array(&$args, &$result);
   drupal_alter('services_request_postprocess', $controller);
 
-  if (strpos($controller['callback'], 'login') !== FALSE && strpos($controller['callback'], 'logout') !== FALSE) {
-    drupal_save_session($old_state);
+  if (session_save_session($user) === FALSE) {
+    $user = $original_user;
+    session_save_session($old_state);
   }
   if ($server_info->debug) {
     watchdog('services', 'results: <pre>@results</pre>', array('@results' => print_r($result, TRUE)), WATCHDOG_DEBUG);
