In reply to @blockyboy. "Im wondering what are": other than above, 1. really understand and use the UFCS (technically in above, but worth repeating) 2. dont make `.()` style calls, instead just do `()` and name accordingly. 2a. ie, static constructors. Don't `Foo.newBarFoo()`, but `newFooFromBar()` or what have you 2b. especially if you split object type defs (""classes"") into individual, shared-name files (modules)