Using friend-level exposed constructors is hackish. Would this cause problems with bindings, or perhaps just general engine structure? I don't know how naturally this maps to other languages. I don't really care either way, but I think this might cause us problems down the road.