Adding some extra classed and interfaces. Basic structure is still growing.