support for non-copyable structs