make input abstract. fixes #2