Add a finished hook
Add overloadable keydown and cancel handlers