factoring out unidata module