make ctors slightly more exception safe