part 3 adding cloud layer
part 4
updated part 4

not really sure what's going on - will definitely have to spend more
time reading the code