TRANSFER safety

Ensures that:

* We can't be given objects we haven't asked for
* Objects we're given hash to the matching value for the request

Currently doesn't:

* Do anything about catching it's exceptions