precondition checks