Would this definition work for AR? Can we make a version that works for both ORMs?