some old code cleared
pimpl pattern applied