Use BaseFieldDefinition.
Use handlers instead controllers