use closures/reflection for hydration, fix rid mapping on protected properties