new version, complete refactoring
new dependency