 		return elements
 	}
 
+	mutating func shuffle() {
+		self = self.shuffled
+	}
+
 	func groupOf(num:Int) -> [[Element]] {
 		var result = [[Element]]()
 		if (num > 0) {
-			for i in 0...(count/num)-1 {
+			for i in 0...((count / num) - 1) {
 				var tempArray = [Element]()
-				for index in 0...num-1 {
-					tempArray.append(self[index+(i*num)])
+				for index in 0...(num - 1) {
+					tempArray.append(self[index + ( i * num)])
 				}
 				result.append(tempArray)
 			}

}

extension UILabel {
    //
    // calculating, if size to fit would expand or shrink the label
    // returns true if the label Size is smaller then before
    // will not change the label' Size
    //
    func textFitsWidth() -> Bool {
        let actualSize = self.frame.size
        self.sizeToFit()
        if self.frame.size.width > actualSize.width {
            self.frame.size = actualSize
            return false
        }
        self.frame.size = actualSize
        return true
    }

	/**
	Transforms the given text by replacing all characters with "●"s.

	- parameter secureText: Text to secure and to set to the current label
	*/
	func setSecureText(secureText: String?) {
		if let _secureText = secureText {
			var secureString = ""
			for _ in 0..<_secureText.characters.count {
				secureString += "●"
			}
			self.text = secureString
		}

	mutating func removeObject(item: Element) {
		if let index = self.indexOf(item) {
			self.removeAtIndex(index)
		}
	}
}

extension Array {

	var shuffled: [Element] {
		var elements = self
		for index in 0..<elements.count {
			let newIndex = Int(arc4random_uniform(UInt32(elements.count-index))) + index
