expand readme and refactor