           onBeforeAction: -> if Meteor.isAdmin() then @next() else AccountsUi.goToLogin()
 
     Setter.merge(@_config, config)
-    unless config then return @_config
+    clonedConfig = Setter.clone(@_config)
+    unless config then return clonedConfig
     unless @_config.email.adminAddress
       throw new Error('AccountsUi: Admin email address not provided')
     unless @_config.email.fromAddress
       throw new Error('AccountsUi: From email address not provided')
     setUpRoutes(@_config.setUpRoutes) if Meteor.isClient
     @setUpTemplates() if Meteor.isServer
-    @_config
+    clonedConfig
 
   signInRequired: (router, args) ->
     args = Setter.merge({

              'the link below:</p><a href="' + args.loginUrl + '">' + args.loginUrl + '</a>'
          # Uses the default in Meteor.
          verifyEmail: {}

      setUpRoutes: ->
        config = @config()

      @sendEmail(email)

    setUpTemplates: ->
      # Merges any email template overrides into the Meteor config.
      config = @config()
      _.each ['resetPassword', 'enrollAccount', 'verifyEmail'], (prop) ->
        _.extend Accounts.emailTemplates[prop], config.email.templates[prop]
