Added const, pure, and nothrow wherever I could