Started to break things out into more discrete classes.  Still working through specifics with the different attribute differences, but most of it is in place.  Will add more later.