more implementation for the input system