this condition is quite confusing and hard to read