restructured input method