Mostly done. Will implement the back and forth later