some refactoring. 0.1.6