ipython not actually required, I just like it