too complex if, should be one method call