Switch to interface extension technique instead of reimplementation