if you are looking to learn about these concepts read everything, interested in code? read toward the bottom.