update and add dual likelihood

Note that the method is protected but NOT public.