Ready, now need refactoring