restructure object creation