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