added better shape generation