First prototype
diff --git a/inc/Gtfs/Route/RouteType.php b/inc/Gtfs/Route/RouteType.php
new file mode 100644
index 0000000..9e9f6cc
--- /dev/null
+++ b/inc/Gtfs/Route/RouteType.php
@@ -0,0 +1,99 @@
+<?php
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: proto/gtfs.proto
+
+namespace Gtfs\Route;
+
+use UnexpectedValueException;
+
+/**
+ * The route_type field describes the type of transportation used on a route.
+ *
+ * Protobuf type <code>gtfs.Route.RouteType</code>
+ */
+class RouteType
+{
+    /**
+     * Tram, Streetcar, Light rail. Any light rail or street level system within a metropolitan area.
+     *
+     * Generated from protobuf enum <code>TRAM = 0;</code>
+     */
+    const TRAM = 0;
+    /**
+     * Subway, Metro. Any underground rail system within a metropolitan area.
+     *
+     * Generated from protobuf enum <code>SUBWAY = 1;</code>
+     */
+    const SUBWAY = 1;
+    /**
+     * Rail. Used for intercity or long-distance travel.
+     *
+     * Generated from protobuf enum <code>RAIL = 2;</code>
+     */
+    const RAIL = 2;
+    /**
+     * Bus. Used for short- and long-distance bus routes.
+     *
+     * Generated from protobuf enum <code>BUS = 3;</code>
+     */
+    const BUS = 3;
+    /**
+     * Ferry. Used for short- and long-distance boat service.
+     *
+     * Generated from protobuf enum <code>FERRY = 4;</code>
+     */
+    const FERRY = 4;
+    /**
+     * Cable car. Used for street-level cable cars where the cable runs beneath the car.
+     *
+     * Generated from protobuf enum <code>CABLECAR = 5;</code>
+     */
+    const CABLECAR = 5;
+    /**
+     * Gondola, Suspended cable car. Typically used for aerial cable cars where the car is suspended from the cable.
+     *
+     * Generated from protobuf enum <code>GONDOLA = 6;</code>
+     */
+    const GONDOLA = 6;
+    /**
+     * Funicular. Any rail system designed for steep inclines.
+     *
+     * Generated from protobuf enum <code>FUNICULAR = 7;</code>
+     */
+    const FUNICULAR = 7;
+
+    private static $valueToName = [
+        self::TRAM => 'TRAM',
+        self::SUBWAY => 'SUBWAY',
+        self::RAIL => 'RAIL',
+        self::BUS => 'BUS',
+        self::FERRY => 'FERRY',
+        self::CABLECAR => 'CABLECAR',
+        self::GONDOLA => 'GONDOLA',
+        self::FUNICULAR => 'FUNICULAR',
+    ];
+
+    public static function name($value)
+    {
+        if (!isset(self::$valueToName[$value])) {
+            throw new UnexpectedValueException(sprintf(
+                    'Enum %s has no name defined for value %s', __CLASS__, $value));
+        }
+        return self::$valueToName[$value];
+    }
+
+
+    public static function value($name)
+    {
+        $const = __CLASS__ . '::' . strtoupper($name);
+        if (!defined($const)) {
+            throw new UnexpectedValueException(sprintf(
+                    'Enum %s has no value defined for name %s', __CLASS__, $name));
+        }
+        return constant($const);
+    }
+}
+
+// Adding a class alias for backwards compatibility with the previous class name.
+class_alias(RouteType::class, \Gtfs\Route_RouteType::class);
+