fixed return type from Token to Token pointer to prevent lslicing