support variable length nodes