should pass value by reference