@Override
    public void run() {
        super.run();

        for ( ;; ) {
            try {
                Logger.log( TAG, getName() + " ready for job." );
                HashtagTweet tweet = bq.take();
                Logger.log( TAG, getName() + " started job." );

                String atcocode =
                        findBusStop( tweet.getLat(), tweet.getLon() );
                Logger.log( TAG, getName() + " found closest bus stop to "
                                           + tweet.getUserName() );

                Bus bus = findNextBus( atcocode );
                Logger.log( TAG, getName() + " found bus times for "
                                           + tweet.getUserName() );

                sendUpdate( tweet, bus );
                Logger.log( TAG, getName() + " sent message to "
                                           + tweet.getUserName() );

            } catch ( IOException | JsonParseException | TwitterException e ) {
                Logger.log( TAG, e.getMessage() );
                // TODO send apology tweet to user.
            } catch ( InterruptedException e ) {}
        }
    }