added a custom dealloc method which outlines it's use cases, but it is not used anywhere