methods that do .wait() by convention should return an IFuture