messy 1
other messy 2
3's small detail
feature complete with part 4