Resolves #950 and adds specs

* Hopefully the code clarity is improved here
* We also change the behavior by *not* duping an object if `space` is
 not yet initialized. This should have been the behavior from the
 beginning, but it was overlooked and did not have specs.