hidden abstract dispatcher