ensure_preconditions everywhere