created the input abstraction layer