Right now if you pass a lambda to a definition it's eval'd only once, which means that each "new" instance generated will share the same data from the original execution time.
This should be refactored to lazy-evaluate.
Also, we should pass in not only the "new" object, but also the overrideData (from resolveData).