fix order of once callback execution
exit if no callback provided
check that target has handlers before removing
add tests