why do we need to return a reference here?