some refactoring, incorporated other modules into this
asd
fixed broken dependencies