This is still a work in progress. If there is something you think is wrong, please feel free to comment.