         if let token = tokenizer.accept(.NUMERIC_LITERAL) {
             coordinate.x = Double(token)!
         } else {
-            throw ParseError.UnexpectedToken("Unexpected token at line: \(tokenizer.line) column: \(tokenizer.column).  Expected \(Token.NUMERIC_LITERAL) but found -> \(tokenizer.stringStream)")
+            throw ParseError.UnexpectedToken(errorMessage(tokenizer, expectedToken: Token.NUMERIC_LITERAL))
         }
         
         if tokenizer.accept(.WHITE_SPACE) == nil {
-            throw ParseError.UnexpectedToken("Unexpected token at line: \(tokenizer.line) column: \(tokenizer.column).  Expected \(Token.WHITE_SPACE) but found -> \(tokenizer.stringStream)")
+            throw ParseError.UnexpectedToken(errorMessage(tokenizer, expectedToken: Token.WHITE_SPACE))
         }
         
         if let token = tokenizer.accept(.NUMERIC_LITERAL) {
             coordinate.y = Double(token)!
         } else {
-            throw ParseError.UnexpectedToken("Unexpected token at line: \(tokenizer.line) column: \(tokenizer.column).  Expected \(Token.NUMERIC_LITERAL) but found -> \(tokenizer.stringStream)")
+            throw ParseError.UnexpectedToken(errorMessage(tokenizer, expectedToken: Token.NUMERIC_LITERAL))
         }
         
         if var coordinate = coordinate as? ThreeDimensional {
             
             if tokenizer.accept(.WHITE_SPACE) == nil {
-                throw ParseError.UnexpectedToken("Unexpected token at line: \(tokenizer.line) column: \(tokenizer.column).  Expected \(Token.WHITE_SPACE) but found -> \(tokenizer.stringStream)")
+                throw ParseError.UnexpectedToken(errorMessage(tokenizer, expectedToken: Token.WHITE_SPACE))
             }
             
             if let token = tokenizer.accept(.NUMERIC_LITERAL) {
                 coordinate.z = Double(token)!
             } else {
-                throw ParseError.UnexpectedToken("Unexpected token at line: \(tokenizer.line) column: \(tokenizer.column).  Expected \(Token.NUMERIC_LITERAL) but found -> \(tokenizer.stringStream)")
+                throw ParseError.UnexpectedToken(errorMessage(tokenizer, expectedToken: Token.NUMERIC_LITERAL))
             }
         }
         

            tokenizer.accept(.WHITE_SPACE)
            
            if tokenizer.accept(.RIGHT_PAREN) == nil {
                throw ParseError.UnexpectedToken("Unexpected token at line: \(tokenizer.line) column: \(tokenizer.column).  Expected \(Token.RIGHT_PAREN) but found -> \(tokenizer.stringStream)")
            }
    
            return Point<CoordinateType>(coordinate: coordinate)

        } else {
            
            if tokenizer.accept(.LEFT_PAREN) == nil {
                throw ParseError.UnexpectedToken(errorMessage(tokenizer, expectedToken: Token.LEFT_PAREN))
            }
            
            let coordinate = try self.coordinate(tokenizer)
