 		XCTAssertNotNil(teams)
 		XCTAssertNotEqual(teams!.count, 0)
 		
-		XCTAssertNotNil(teams!.first!.players)
-		XCTAssertNotEqual(teams!.first!.players!.count, 0)
+		XCTAssertNotEqual(teams!.first!.players.count, 0)
 	}
 	
 	func testParsing2DimensionalArrayOfObjectsWithTransform() {
 		let game = Mapper<Game>().map(JSONPayload()["game"])
 
 		XCTAssertNotNil(game)
-		XCTAssertNotNil(game!.players)
-		XCTAssertNotEqual(game!.players!.count, 0)
-		XCTAssertNotEqual(game!.players!.first!.count, 0)
-		XCTAssertNotEqual(game!.players!.last!.count, 0)
+		XCTAssertNotEqual(game!.players.count, 0)
+		XCTAssertNotEqual(game!.players.first!.count, 0)
+		XCTAssertNotEqual(game!.players.last!.count, 0)
 	}
 	
 	func testParsingDictionaryOfObjectsWithTransform() {
 		let game = Mapper<Game>().map(JSONPayload()["game"])
 
 		XCTAssertNotNil(game)
-		XCTAssertNotNil(game!.team1Lineup)
-		XCTAssertNotEqual(game!.team1Lineup!.count, 0)
-		XCTAssertNotNil(game!.team2Lineup)
-		XCTAssertNotEqual(game!.team2Lineup!.count, 0)
+		XCTAssertNotEqual(game!.team1Lineup.count, 0)
+		XCTAssertNotEqual(game!.team2Lineup.count, 0)
 	}
 	
 	func testParsingDictionaryOfArrayOfObjectsWithTransform() {
 		let game = Mapper<Game>().map(JSONPayload()["game"])
 		
 		XCTAssertNotNil(game)
-		XCTAssertNotNil(game!.headToHead)
-		for (position, players) in game!.headToHead! {
+		for (position, players) in game!.headToHead {
 			XCTAssertNotEqual(players.count, 0, "No players were mapped for \(position)")
 		}
 	}

		let game = Mapper<Game>().map(JSONPayload()["game"])
		
		XCTAssertNotNil(game)
		XCTAssertNotNil(game!.teams)
		XCTAssertNotEqual(game!.teams!.count, 0)
	}
	
	// MARK: - Internal classes for testing
	class Game: Mappable, URIInitiable {
		var players: [[Player]]?
		var team1Lineup: [String : Player]?
		var team2Lineup: [String : Player]?
		var headToHead: [String : [Player]]?
		var teams: Set<Team>?
		var winner: Team?
		
		required init(URI: String) {}
		required init?(_ map: Map) {}
		
		func mapping(map: Map) {
			players <- (map["players"], RelationshipTransform<Player>())			// 2D Array with transform
			team1Lineup <- (map["team1_lineup"], RelationshipTransform<Player>())	// Dictionary with transform
			team2Lineup <- (map["team1_lineup"], RelationshipTransform<Player>())
			headToHead <- (map["head_to_head"], RelationshipTransform<Player>())		// Dictionary of arrays with transform
			teams <- (map["teams"], RelationshipTransform<Team>())					// Set with transform
			winner <- (map["winning_team_url"], RelationshipTransform<Team>())		// Single instance with transform
		}
	}
	
	class Team: NSObject, Mappable, URIInitiable {
		var players: [Player]?
		
		required init(URI: String) {}
		required init?(_ map: Map) {}
		
		func mapping(map: Map) {
			players <- (map["players"], RelationshipTransform<Player>())
		}
	}
	

		]
	}
	
	
	// MARK: - Non-Optional Tests
	func testParsingSingleInstanceWithTransform() {
		let game = Mapper<Game>().map(JSONPayload()["game"])
		
		XCTAssertNotNil(game)
		XCTAssertNotEqual(game!.winner.URI, "FAKE")
	}
	
	func testParsingArrayOfObjectsWithTransform() {
