Moved field type definitions to separate file

And changed everything accordingly so it doesn't break.
Added InvalidField exception