This is probably the best explanation, and some small tutorial stuff in there too... https://www.jozvex.com/tutorials/fg.html https://www.jozvex.com/tutorials/fg2.html