we will eventually use python's "six" library for python 2 & 3 compatibility