use spire loop
reorganize
update