clean up
more flexible structure that enables SA