preconditions and assumptions