WIP: boilerplate code for input methods

Change-Id: I41d4de1cab521c679d414cfc7c1a2d0f9c1fcaaf
WIP: use inheritance

Change-Id: I5436cab5c5319f9913714bc67a3c1887c7b935a3