take a look at this, simplify arities, back to dot types as an experiment