refactoring for 0.5.0