Also, constraint checks should probably be done as part of each promise type module. common constraints may be checked here, but a function PromiseCheck should probably delegate to promise modules (eventually).