Added 4 new Test classes and a whole lot of work on basic algorithm