but needs modifiable lvalue