Cleanup/3.x/core client impl

Package cleanup
Introduced interfaces

Big number of changes causes by moving classes, so a lot of imports on classes changed. 
Is this a wrong refactor?