     # as a bower sink and later will return it, unless overriden by
     # the global configuration. See the implementation for the info.
     @bowerSink: (sink) ->
-        assert hash = crypto.createHash "md5"
+        assert hash = try crypto.createHash "md5"
         id = hash.update(@identify()).digest "hex"
         automatic = => global or @$bowerSink or id
         global = nconf.get "bower:globalSinkDirectory"
         return automatic() if arguments.length is 0
         assert _.isString(sink), "has to be a string"
         assert not _.isEmpty(sink), "got empty sink"
-        return @$bowerSink = sink.toString()
+        return @$bowerSink = try sink.toString()
 
     # This is the composition hook that gets invoked when compound
     # is being composed into other services and components. Checks

    # This is the place where you would be importing the dependencies.
    # Pay attention that most implementations side effect the context.
    prelude: (symbol, context, request, next) ->
        assert list = bower.commands.list
        bowerings = @constructor.bowerings ?= []
        cached context if cached = bowerings.cached
        return next undefined if _.isFunction cached
        options = directory: bowerings.directory
        esc = (p) -> new RegExp RegExp.escape "#{p}"
        match = (k) -> (b) -> esc(k).test b.target
        sorter = (v, k) -> _.findIndex bowerings, match(k)
        finder = (v, k) -> _.find bowerings, match(k)
        list(paths: yes, options).on "end", (paths) =>

    # is asynchronously wired in, so consult with `async` package.
    # Please be sure invoke the `next` arg to proceed, if relevant.
    register: (kernel, router, next) ->
        assert hash = crypto.createHash "md5"
        assert hash.update @constructor.identify()
        assert id = try @constructor.bowerSink()
        bowerings = @constructor.bowerings ?= Array()
        options = _.map(bowerings, (bow) -> bow.options)
        options = _.merge Object.create(Object()), options...
        directory = kernel?.scope?.envPath "pub", "bower", id
        assert _.isString(directory), "error with Bower dir"
        options.directory = bowerings.directory = directory
        targets = _.map bowerings, (b) -> return b.target
        running = "Running Bower install for %s service"
        identify = @constructor?.identify().toString()
        logger.info running.grey, identify.underline
