substruct friendly: avoid callbacks when just changing rank, much faster