New Approach for wait till element will be display

What is the best approach for waiting till an element will be display?
Till now i have used the fluentwait coding (see below) however i just upgrade the java client library from 2.X to 3.1.0 & i wonder if there is a better handling for it.
Thanks!

==============================================================
public MobileElement fluentwait(IOSDriver driver, final By byType) {
Wait wait = new FluentWait(driver)
.withTimeout(45, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);

	MobileElement foo = (MobileElement) wait.until(new Function<IOSDriver, WebElement>() {
		public MobileElement apply(IOSDriver driver) {
			return (MobileElement) driver.findElement(byType);
		}
	});

	wait.until(ExpectedConditions.elementToBeClickable(byType));

	return foo;
}