general classes and interfaces - again

general classes and interfaces between parts of the project. The same as
it was in commit number a292dcf2916edd7d3447d898b9e9ec305bfd2c3b

WARNING!!!!!
please be very careful with the function revert