try exhaustive checking like smallcheck.

also switching to Vector in places for performance..