Revert "Revert "interface""

This reverts commit 400aa5c02c88472116064b52f694ecaf6cd7fc63.