added exception safety advices, straus3 appendix D