 
+
+class SiriusUtils
+  @is_function: (a) ->
+    Object.prototype.toString.call(a) is '[object Function]'
+
+  @is_string: (a) ->
+    Object.prototype.toString.call(a) is '[object String]'
+
+  @is_array: (a) ->
+    Object.prototype.toString.call(a) is '[object Array]'
+
+  @camelize: (str) ->
+    str.charAt(0).toUpperCase() + str.slice(1)
 ###
   RoutePart is a parser for string route representation
 ###

    @args = args
    true

###
  Main Object.


            r = f.match(current)
            if r && !result
              result = true
              f = part[1]
              if f.handle_event
                f.handle_event(null, f.args)
              else
                f.apply(null, f.args)
              return

        #when no results, then call 404 or empty function
        if !result
          SiriusApplication.adapter.fire(document, "application:404", current, prev)
          #FIXME
          r404 = routes['404']
          if r404
            z = new ControlFlow(r404)
            z.handle_event(null, current)

      fn()

  log: false
  #adapter for application @see adapter documentation
