? to practice object-oriented design and inheritance in C++
? to gain practice in using C++ STL containers and algorithms
? to practice designing and implementing a solution, in C++, based on a specification(in this document)
? to practice using some of the new C++11 features
compiling and running using g++4.7
use same datastructure for all.