Abstracted away the field initialization, and refactored a bit