updated to add conceptual flow diagram
refactored unit test to have a base class which can be used to test other models