Note: this is a WIP document I am actively working on a better version