added abstract token model and fix performance on getting tokens