   #   view.login user
   #
   # Returns itself.
-  login: (user) ->
+  login: (user, options={}) ->
     @updateUser(user) if user
     @updateState(@states.START_READING)
     @element.addClass @classes.loggedIn
-    @publish "login", [this]
+    @publish("login", [this]) unless options.silent
+    this
 
   # Public: Switches the current view state to reading. This should be called
   # once the user decides to start a reading session.
   #
   # Publishes the "reading" event once the view has updated.
   #
-  # Returns itself.
-  reading: ->
+  # options - An object literal of method options.
+  #           silent - If true the method will not publish any events.
+  #
+  # Returns itself.
+  reading: (options={}) ->
     @updateState(@states.NOW_READING)
-    @publish "reading", [this]
+    @publish("reading", [this]) unless options.silent
+    this
 
   # Public: Switches the current view state to "finish". This should be called
   # once a user decides to end a reading session.
   #
   # Publishes the "finish" event once the view has updated.
   #
+  # options - An object literal of method options.
+  #           silent - If true the method will not publish any events.
+  #
   # param - comment
   #
   # Returns itself.
-  finish: ->
-    @publish "finish", [this]
+  finish: (options={}) ->
+    @publish("finish", [this]) unless options.silent
     @login()
     this
 

  #
  # Publishes the "login" event once the view has updated.
  #
  # user - The user object retrieved from Readmill.
  #
  # Examples
  #

  # @login() once the user has authenticated and the user object has been
  # retrieved from the server.
  #
  # options - An object literal of method options.
  #           silent - If true the method will not publish any events.
  #
  # Examples
  #
  #   view.connect()
  #
  # Returns itself.
  connect: (options={}) ->
    @publish "connect", [this] unless options.silent
    this

  # Public: Triggers the "disconnect" event passing in the View instance to
  # all registered listeners. This is called when the user wishes to
  # logout of the Readmill service. The implmentor should then call
  # @logout() once the user has been logged out from Readmill.
  #
  # options - An object literal of method options.
  #           silent - If true the method will not publish any events.
  #
  # Examples
  #
  #   view.disconnect()
  #
  # Returns itself.
  disconnect: (options={}) ->
    @publish "disconnect", [this] unless options.silent
    this

  # Public: Updates the view to the "logged in" state. Showing the log out
  # button and user details. This should be called once the user has been
