support variable length data