minor interface changes: operator() returns void now, error handling via exceptions