huge refactoring and interface development