pub type BlockId = Id<BlockKind>;
pub struct BlockId(u32, PhantomData<BlockKind>);
0: u32
1: PhantomData<BlockKind>