work-in-progress refactored input providers