cleaned types + readded a bit of laziness