Testing suite added, need refinement of course.