 }
 /*:
  ## Adding New Properties
- Extensions allow you to add new type and instance computed properties, not stored properties or property observers. The syntax is exactly like creating a computed property in the original type.  All existing stored and computed properties, methods and subscripts are available for you to use in the extension. You can also use the `self` keyword to explicitly indicate that you are referencing the instance of the type you are extending.
- - example: ADD
+ Extensions allow you to add new type and instance computed properties, not stored properties or property observers. The syntax is exactly like creating a computed property in the original type. All existing stored and computed properties, methods and subscripts are available for you to use in the extension. You can also use the `self` keyword to explicitly indicate that you are referencing the instance of the type you are extending.
+ - example: Extending the `String` type.\
+ This example creates an extension for `String` and adds an instance computed property `length`. The `length` property accesses the `characters` property which accesses the `count` property to return the number of characters in the string.
  */
 extension String {
     

let grade77 = 77.grade
/*:
 ## Conforming to a Protocol with an Extension
 
 - example: ADD
 */
class Crawler {
    

    }
}

extension Runnable {

    func runfast() {

        run(13.8)
    }
}

class Runner: Walker, Runnable {

    var distance: Double = 0
}

let runner: Runnable = Runner(age: 16, direction: "North")

runner.run(6.5)
runner.runfast()
/*:
 ### Constraining your Protocol Extension 
 With protocol extensions, you can constrain the protocol extension to only make available the properties and methods to specific conforming types. This allows you to create a protocol extension and indicate what conforming types are allowed to receive the default implementation. You add constraints to a protocol extension with the `where` keyword after the type your are extending. The clause of the `where` is what you are constraining the protocol extension to.
 - example: Protocol extension constraints.\
 Below we are extending the `Array` collection type adding a method `func totalDistance() -> Double`. The `func totalDistance() -> Double` is only available when the array is storing instances of types conforming to the `Runnable` protocol.
 */
extension Array where Element: Runnable {

