refactoring of base classes and defined search
Merge origin/master