Overhaul to more closely match java style inheritance
Update docs and node version 2.0.0