added preliminary classes and functionality