dynamic init for complex types, initial revision