added comments
refactored constraints, and pour/fill methods
removed duplicates by refactoring constraints, no need for set reordering
replaced tuples by string lables for simple bfs/dfs