Obviously this needs more updates, but here's a start