https://medium.com/@CalebMBowyer/single-agent-reinforcement-learning-rl-modeling-components-f09cd6fdf62d