             userID: data.in_reply_to_user_id_str
             statusID: data.in_reply_to_status_id_str
 
-        {id_str, created_at, text} = data
+        {id_str, created_at, text, entities} = data
 
         if not data.user? # is this data from the Search API
             user_name = data.from_user


    statusesFromData: (data) -> Tweet.from item for item in data

class TwitterUserTimeline extends TwitterTimeline
    constructor: (username, options) ->
        @options  = extend {}, @options, options
        @username = username.toLowerCase()
        @sendData =
            screen_name: @username
            count: @options.count
            include_rts: @options.includeRetweets

    # that IE can't handle, so I convert it to something more normal.
    str.replace(/^(.+) (\d+:\d+:\d+) ((?:\+|-)\d+) (\d+)$/, "$1 $4 $2 GMT$3")

linkify = (str, entities) ->
    # creates links for hashtags, mentions and urls
    return linkify_with_entities str, entities if entities

    str .replace(/(\s|^)(mailto\:|(news|(ht|f)tp(s?))\:\/\/\S+)/g, '$1<a href="$2">$2</a>')
        .replace(/(\s|^)@(\w+)/g, '$1<a class="mention" href="http://twitter.com/$2">@$2</a>')
        .replace(/(\s|^)#(\w+)/g, '$1<a class="hashTag" href="http://twitter.com/search?q=%23$2">#$2</a>')

linkify_with_entities = (str, entities) ->
    segments = for segment in get_segments str, entities
        switch segment.type
            when 'string' then segment.val.replace('\n', '<br />')
            when 'hashtags'
                """<a class="hashTag" href="http://twitter.com/search?q=%23#{segment.val.text}">##{segment.val.text}</a>"""

            when 'urls'
                link = segment.val
                """<a href="#{link.expanded_url or link.url}">#{link.display_url or link.url}</a>"""

            when 'user_mentions'
                """<a class="mention"
                      href="http://twitter.com/#{segment.val.screen_name}"
                      title="#{segment.val.name}">@#{segment.val.screen_name}</a>"""

    segments.join ''

get_segments = (str, entities) ->
    entities = ungroup_entities entities
    segments = []
    from = 0

    for entity in entities
        segments.push type: 'string', val: str.slice(from, entity.span[0])
        segments.push entity
        from = entity.span[1]

    segments.push type: 'string', val: str.slice(from)

    segments

ungroup_entities = (entities) ->
    _entities = []

    for key, value of entities
        for e in value
            _entities.push type: key, span: e.indices, val: e

    _entities.sort (a, b) -> a.span[0] - b.span[0]

    _entities

Timeline.shorthands.push(
    {
