decodeStatus' :: JSValue -> Result Status
decodeStatus' (JSObject obj) = Status <$> (maybeToResult . parseTime' =<< valFromObj "created_at" obj)
                                      <*> valFromObj "id" obj
                                      <*> valFromObj "text" obj
                                      <*> valFromObj "source" obj
                                      <*> valFromObj "truncated" obj
                                      <*> valMayFromObj "in_reply_to_status_id" obj
                                      <*> valMayFromObj "in_reply_to_user_id" obj
                                      <*> valFromObj "favorited" obj
                                      <*> valMayFromObj "in_reply_to_screen_name" obj
                                      <*> (decodeUser =<< valFromObj "user" obj)
                                      <*> getRetweetedStatus obj
decodeStatus' :: JSValue -> Result Status
decodeStatus' (JSObject obj) = Status <$> (maybeToResult . parseTime' =<< valFromObj "created_at" obj)
                                      <*> valFromObj "id" obj
                                      <*> valFromObj "text" obj
                                      <*> valFromObj "source" obj
                                      <*> valFromObj "truncated" obj
                                      <*> valMayFromObj "in_reply_to_status_id" obj
                                      <*> valMayFromObj "in_reply_to_user_id" obj
                                      <*> valFromObj "favorited" obj
                                      <*> valMayFromObj "in_reply_to_screen_name" obj
                                      <*> (decodeUser =<< valFromObj "user" obj)
                                      <*> getRetweetedStatus obj
decodeStatus' (JSObject obj) = Status <$> (maybeToResult . parseTime' =<< valFromObj "created_at" obj)
                                      <*> valFromObj "id" obj
                                      <*> valFromObj "text" obj
                                      <*> valFromObj "source" obj
                                      <*> valFromObj "truncated" obj
                                      <*> valMayFromObj "in_reply_to_status_id" obj
                                      <*> valMayFromObj "in_reply_to_user_id" obj
                                      <*> valFromObj "favorited" obj
                                      <*> valMayFromObj "in_reply_to_screen_name" obj
                                      <*> (decodeUser =<< valFromObj "user" obj)
                                      <*> getRetweetedStatus obj