add beginnings of materials framework.  needs _tons_ of work still.