branched to rewrite more oo