move type registration to construct