implement by reference assignment