First part Input implementation.