BP: making BPRing actually a ring, pulling the factor factory out