Completely rewritten, because I'm a perfectionist...