changing the way it is implemented internally