formulate architecture plan

Draft an overview of the different classes of the program and what they do.
Write up some header files for these classes with partially complete declarations.