     constructor: ->
         super
         ALL_INSTANCES.push(this)
-        return unless @selector
-        @domRoot = document.body.querySelector(@selector)
-        _.dom(@domRoot).addClass('lanes-root')
-        Lanes.fatal("Root selector #{@selector} not found") unless @domRoot
-        _.dom(@domRoot).html = "<div class='lanes'/>"
-        this.lanes = @domRoot.querySelector('.lanes')
+        unless (@container or (@selector and
+                (@container = document.body.querySelector(@selector))))
+            console.warn("Unable to render without container or valid selector")
+            return
 
-        Lanes.lib.ResizeSensor(@domRoot, _.debounce( =>
+        _.dom(@container).addClass('lanes-root')
+        Lanes.fatal("Root selector #{@selector} not found") unless @container
+        _.dom(@container).html = "<div class='lanes'/>"
+        this.lanes = @container.querySelector('.lanes')
+
+        Lanes.lib.ResizeSensor(@container, _.debounce( =>
             @_updateDimensions()
         , 250))
         this._updateDimensions()



    onBoot: ->
        prev = _.dom(this.domRoot.previousElementSibling)
        if @useHistory
            @initializeHistory()
        else

        height:         'number'
        el:             'element'
        selector:       'string'
        container:      'element'
        reactRoot:      'object'
        lanes:          'element'
        modalProps:     'object'
