I think it is better to use the typesystem here than to reinvent a portion of it.