#19 refactoring before 1.0.0 release