Lots of changes. Should update this more often.