wrote a bit more in-depth