Restructure and add spec-macros.