Seems that register should take an type of Gate and position of qubits. After it apply gates on qubits and provide measurement.
So design of applying gate on register ma be this:
r := Register(2)
m := r.Apply(H(),1).Apply(CNOT(),2,1).Measure()
// m[0] = |0> -> m[1] = |0>
// or
// m[0] = |1> -> m[1] = |1>