add different value size support