I feel like this struct should be something that is more reusable.... hrm.