Move the Field class into a separate file
Move errors into a separate file
Use `method_missing` instead of `class_eval`