extensive handler interface