actually implement toCMSInstance