input and transformations