Refactored to be more OOJS