Set.js completly cleaned and refactored to be more flexible.