Factor out common parts of Rules into OneToOneRule and ManyToOneRule