Major breaking change from 1.x, so treating keeping both versions for now. (adapted from 33f11be707e39acf96423f97f3baa80d8f11a0cb) (adapted from 9e8dea7986dbdde850a58c7704182776642d8919)