(Refer to whitepaper until I get a chance to make this look nice)