more refactoring, update readme