Part 1:

Training data: 

Part 2:

Part 3:

Part 4:

Developer's tutorial: