 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

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

    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
