Don't call register without spec
Use different name for different signature
Always call set_spec_id
Fields shouldn't cause AlreadyRegistered exceptions