better factory structure