we are still debating whether or not the `define()` should be called with the object or just a reference to the factory function. /cc @ericf