refactor 70% done