No need for extra data pointer