adding building blocks and starting the rewrite