isolate instance creation, isolate external messages, remove arg order dependencies
explicitly define defaults in gear and wheel class