Full working souce for lesson 1