This is pretty much everything.
answer