=THIS IS A WORK IN PROGRESS AND LIKELY HAS MISTAKES. PLEASE IGNORE FOR NOW=