This post is a continuation of part 1, part 2 and part 3. I suggest you read all 3 parts first to understand what is happening here in part