restructuring ctors and init and serialization