delete functionality implimented