generalised the two sequential ops