 
     @send(requestConfig, routeOptions, args...)
 
-  # send can now be used separately without initializing routes
-  send: (requestConfig, routeOptions, args...) ->
-    return if @records.isPending(requestConfig)
-
-    requestInfo = _.pick(routeOptions, 'subject', 'topic', 'action')
-    requestInfo = guessInfoFromConfig(requestConfig) if _.isEmpty(requestInfo)
-
-    requestConfig.events =
-      success: interpolate(@_patterns.receive, _.merge({status: @_statuses.success}, requestInfo))
-      failure: interpolate(@_patterns.receive, _.merge({status: @_statuses.failure}, requestInfo))
-
-    requestDelay = routeOptions.delay or @getOptions().request.delay
-
-    _.delay =>
-      {handlers} = @getOptions()
-      {onSuccess, onFail} = routeOptions
-
-      onSuccess ?= DEFAULT_SUCCESS
-      onFail ?= DEFAULT_FAIL
-
-      @_xhr.request(requestConfig)
-        # if onFail doesn't Promise.reject anything, then the default fail will not fire.
-        .then(_.partial(onSuccess, _, args...), _.partial(onFail, _, args...))
-        .then(_.partial(handlers.onSuccess, _, args...), _.partial(handlers.onFail, _, args...))
-
-    , requestDelay
-
 # include and export cascading error handler for convenience/custom error handling.
 
 module.exports = {APIHandler}


  initializeRecords: =>
    @records = new XHRRecords()

  initializeRoutes: (routes) =>
    @routes = new Routes(routes)

  initializeXHR: (xhrOptions, interceptors, isLocal) =>
    xhr = axios.create(xhrOptions)

  topic: '*'
  action: '*'



class APIHandlerBase
  constructor: (options, channel) ->
    @setOptions(options)

    @initializeRecords()
    @initializeEventOptions(@getOptions().eventOptions)
    @initializeXHR(@getOptions().xhr, new Interceptors(@getOptions().hooks, @), @getOptions().isLocal)

  destroy: =>
