Added the abstract input class