separated versions of the code