implemented deselect
working on cancel