ver 0.4, refactoring