mutable structures must be passed by reference