add destructor
reworked manage with PIMPL handlers