impl: input system; close #3