added generic, typeable for Output and Auto
various API changes and a less strict Output