adapt to different constructors in 2.8 vs. 3.0