object->new should take hash or hash-ref
overloading must be explicitly inherited (not ideal, but until we have more control over MRO we need to do this)