Add interfaces for clarify why developer needs to declare methods like these
Merge pull request #1060