changed ground to functional object creation pattern