some refactoring, and mouth