diff --git a/twitter_pull.class.inc b/twitter_pull.class.inc
index 48adc6c..a25e5de 100644
--- a/twitter_pull.class.inc
+++ b/twitter_pull.class.inc
@@ -164,6 +164,17 @@ class twitter_puller {
       return FALSE;
     }
 
+    $status_lookup = FALSE;
+    if (is_numeric($this->twitkey)) {
+      $status_lookup = TRUE;
+    }
+    
+    if ($status_lookup) {
+      $path             = "statuses/show/" . $this->twitkey;
+      $params['count']  = 1;
+      $params['q']      = '';
+    }
+
     // Try to load the status via the twitter api (from the twitter module).
     $result = $twitter->call($path, $params, "GET");
 
@@ -174,6 +185,11 @@ class twitter_puller {
     // We need to parse the actual result array.
     $result = isset($result['statuses']) ? $result['statuses'] : $result;
 
+    // Status lookup will return a status, not an array of them.
+    if ($status_lookup) {
+      $result = array($result);
+    }
+
     // Proccess the tweets for twitter_pull compatibility.
     $this->parse_items($result);
 
@@ -194,9 +210,13 @@ class twitter_puller {
       foreach ($items as $item) {
         $obj = new stdClass();
 
-        $item = (object) $item;
+        // Convert arrays to objects.
+        $item = json_decode(json_encode($item), FALSE);
 
-        $user = !empty($item->retweeted_status) ? $item->retweeted_status->user : $item->user;
+        $user = $item->user;
+        if (variable_get('twitter_pull_retweet_user', TRUE) && !empty($item->retweeted_status)) {
+          $user = $item->retweeted_status->user;
+        }
         
         $obj->id = check_plain($item->id_str);
         $obj->username = check_plain(!empty($user->name) ? $user->name : $item->from_user);
