Introduction rewritten, please read before merging