making destroy method generic and possibly a bit safer in the sense it gets harder to invoke the wrong one