New, incompatible, class-based version