we may consider folding some of these operations as they are always used together.