Move some initializer code around for easier refactoring
Add many corrections kindly supplied by the fantastic @kevinsawicki