Fleshed out input module

Still required: write test benches for input module and subcomponents