ADD: started implementing of #9
ADD: basic generic classes and interfaces of #9