deal with tokens with varying attributes