allocWithZone needs to return a proper CF object