rewrite of the whole USB descriptor hierarchy stuff