Review and improve interface hierarchy

see legacy/trac#19398 (moved) (comment 10)