2 classes ... 1 list ... refactoring to a whole different level DO NOT PULL THIS