more fleshed out canonicalized class