register has to be called AFTER the type is registered while unregister has to be called BEFORE it's unregistered.