take a cup coffee
added Array::getOrElseUpdate