     private let data: NSData
     
     // MARK: - Initialization
-    
+
+    /**
+        Initialize the parsed with a data instance.
+
+        - Parameter data: The GPX data object you want to parse.
+        
+        - Throws: `GKParseError.InvalidData` if the data object is empty.
+    */
     public init(data: NSData?) throws {
         guard let data = data else {
             throw GKParseError.InvalidData

    }
    
    // MARK: - Parsing
    
    public func parse() throws -> GKFile {
        guard let document = try? AEXMLDocument(xmlData: data) else {
            throw GKParseError.InvalidFormat

import AEXML
import AFDateHelper

/**
 A list of errors that can be thrown by the parser. These errors can be thrown during
 initialization or during the parsing process.
 
 - InvalidData: When the data object is empty.
 - InvalidFormat: When the data contains an incorrect format that can't be parsed.
 - Empty: When no routes, tracks or waypoints can be found. _not yet implemented_
*/
public enum GKParseError: ErrorType {
    case InvalidData
    case InvalidFormat
    case Empty
}

/**
 The parser that is responsible for converting a given `NSData` representation of the GPX file
 into an understandable format.
*/
public struct GKParser {
    
    // MARK: - Properties
