type-level data structures helpers