Fixed some bugs and added some tests