added abstract token model