refactor input to be fully fluid