improve token system