Fixed a few bugs and added testcases.