Refactor, planning on adding a form of iterator later