sync from inverse/tidyup