make private classes private, dont pass params

It is very difficult to test at the subclass level to ensure parameters set at the main class are passed correctly to the subclass, especially when the subclass has defaults of it's own.  I have made the mistake numerous times of setting a subclass parameter and all of the tests succeed but I forgot to actually pass the value from the main class.

This PR removes parameter passing and pulls all variables directly from the main class.
Spec tests are updated to ensure subclasses behave as they should based on parameters to the main class
OS dependent testing removed from main spec, no OS dependent decisions are made there
Minor bug fixes
Minor lint cleanup