Input class

Wrapped input back into a class again, not fully implemented but all
currently required functions are available