Cloning an object in Environment.lookup could create an instance of the wrong object, so now dynamically creating it with obj.constructor
Moved tests into it's own folder