make it const, move implementation here.