implementing the dealloc