custom utility types