refactoring to allow resolve circular dependencies
0.0.2