> > Constant = (C1*C2)/(C3^0.5) = mol�/mol^0.5 = mol^(3/2) > > oops forgot to say that Constant is alway unitless as one divides by the You would certainly still be able to do explicit type conversions in the normal way for cases where "dimension ..." doesn't work. I would imagine an implementation where "type t ... dimension a * b" would create a data structure (a_power=>1, b_power=>1, others=>0) so a real type without a "dimension" part would be (others=>0) implicitly. As to fractional powers, how common are arbitrary fractions? Would it be reasonable to do: type root_mol is ... type mol is ... dimension root_mol * root_mol; > CO2 (g) = CO2 (aq) > > Constant = atm/(mol/l) As a former math major who thought chemists mathematical barbarians, I confess ignorance of what you mean here. ;)