implementing reference