flatten
use lazy val