varint all the way
add long support