Implements Precondition checking