public void setController(ITwitterController controller)
  {
    frame = new JFrame();
    frame.add(mainPanel);
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    frame.setSize((int)(screenSize.getWidth()/2), (int)(screenSize.getHeight()/2));
    frame.setTitle("TwitterView"); //TODO: add to ResourceBundle

    validateButton.addActionListener(e ->
    {
      retrieveButton.setEnabled(false);

      SwingWorker<Boolean, String> worker = new SwingWorker<Boolean, String>()
      {
        @Override
        public Boolean doInBackground()
        {
          Boolean successful = false;
          try
          {
            controller.validateCredentials(consumerKeyTextField.getText(), consumerSecretTextField.getText());
            publish("Request Completed");  //TODO: add to ResourceBundle
            successful = true;
          }
          catch (Exception e)
          {
            e.printStackTrace();  //TODO: add Apache log4j
            publish(e.getMessage());
          }
          return successful;
        }
        @Override
        public void done()
        {
          retrieveButton.setEnabled(true);
        }
        @Override
        public void process(List<String> messages)
        {
          for(String message : messages)
            appendStatus(message);
        }
      };
      worker.execute();
    });

    retrieveButton.addActionListener(e ->
    {
      validateButton.setEnabled(false);

      SwingWorker<Boolean, String> worker = new SwingWorker<Boolean, String>()
      {
        @Override
        public Boolean doInBackground()
        {
          Boolean successful = false;
          try
          {
            controller.displayTimelineTweet(screenNameTextField.getText());
            publish("Request Completed"); //TODO: add to ResourceBundle
            successful = true;
          }
          catch (Exception e)
          {
            e.printStackTrace();  //TODO: add Apache log4j
            publish(e.getMessage());
          }
          return successful;
        }
        @Override
        public void done()
        {
          validateButton.setEnabled(true);
        }
        @Override
        public void process(List<String> messages)
        {
          for(String message : messages)
            appendStatus(message);
        }
      };
      worker.execute();
    });

    clearButton.addActionListener(e -> clearStatus());
  }