Basic functionality exits, but this is far from robust (shakes head at gcd function)
I forgot to push this