Source: https://www.usenix.org/system/files/login/articles/login_spring17_11_beazley.pdf