Added a lot of details of how it should work