Initial commit

Haven't fully tested the direction->tuple mapping

There's probably a more 'Pythonic' way of doing it also that I'll need
to investigate