Note: This is currently incomplete-- I may come back to this if I find the time and spark of motivation.

Variant: