adding some low level helper types