Complete refactoring; write readme description