update and add dual likelihood

please also document std constructors