cutting over to more functional model [ci skip]