restructured, clean up