add cmake rules
source refactoring

Q_OBJECT classes moved to *_p.h files to simplify mocking.