added curved struts and generalise things