Going to work on refactoring :P