refactoring v0.04