improved preconditions