use references for performance reasons