100% done. Room for refactoring