some cleaning in the destructors
use stl containers instead of c style pointers to host data