building out the general structure