added initialisation list and destructor