@DuppleCP and others look at this! it took a long time to make!