Generalise init constructor; convert reference constructor to method

The two things clashed.  The reference constructor turns out to be
easier as a method; the init constructor takes a var instead of a
builtin type.