simplified handler (no more canHandle())