https://tim.blog/2016/02/28/how-to-achieve-self-ownership/