diff --git a/src/shared/cplusplus/Bind.cpp b/src/shared/cplusplus/Bind.cpp
index d7ab4d38535679315992c96e54a3d2d9e8796f6e..3517b51b9dfa48b121e92d4403a13b1ae72287fe 100644
--- a/src/shared/cplusplus/Bind.cpp
+++ b/src/shared/cplusplus/Bind.cpp
@@ -626,7 +626,7 @@ bool Bind::visit(OperatorAST *ast)
     return false;
 }
 
-int Bind::cppOperator(OperatorAST *ast)
+OperatorNameId::Kind Bind::cppOperator(OperatorAST *ast)
 {
     OperatorNameId::Kind kind = OperatorNameId::InvalidOp;
 
@@ -2423,7 +2423,7 @@ bool Bind::visit(QualifiedNameAST *ast)
 
 bool Bind::visit(OperatorFunctionIdAST *ast)
 {
-    const int op = this->cppOperator(ast->op);
+    const OperatorNameId::Kind op = this->cppOperator(ast->op);
     ast->name = _name = control()->operatorNameId(op);
     return false;
 }
diff --git a/src/shared/cplusplus/Bind.h b/src/shared/cplusplus/Bind.h
index 0bdd5c63e1fc054377efd0b616cc02aff55dd460..0a6e757b46244a710a4979a42c5e4d5f649e2029 100644
--- a/src/shared/cplusplus/Bind.h
+++ b/src/shared/cplusplus/Bind.h
@@ -51,6 +51,7 @@
 
 #include "ASTVisitor.h"
 #include "FullySpecifiedType.h"
+#include "Names.h"
 
 namespace CPlusPlus {
 
@@ -117,7 +118,7 @@ protected:
     FullySpecifiedType newArrayDeclarator(NewArrayDeclaratorAST *ast, const FullySpecifiedType &init);
     void newInitializer(NewInitializerAST *ast);
     FullySpecifiedType newTypeId(NewTypeIdAST *ast);
-    int cppOperator(OperatorAST *ast);
+    OperatorNameId::Kind cppOperator(OperatorAST *ast);
     void parameterDeclarationClause(ParameterDeclarationClauseAST *ast, unsigned lparen_token, Function *fun);
     void translationUnit(TranslationUnitAST *ast);
     void objCProtocolRefs(ObjCProtocolRefsAST *ast, Symbol *objcClassOrProtocol);
diff --git a/src/shared/cplusplus/Control.cpp b/src/shared/cplusplus/Control.cpp
index 647b17ce3577a8b09740306148ee616d386418f5..1b42ead20612ce1634e27a1adff18182af3e97b5 100644
--- a/src/shared/cplusplus/Control.cpp
+++ b/src/shared/cplusplus/Control.cpp
@@ -259,7 +259,7 @@ public:
         return destructorNameIds.intern(DestructorNameId(id));
     }
 
-    const OperatorNameId *findOrInsertOperatorNameId(int kind)
+    const OperatorNameId *findOrInsertOperatorNameId(OperatorNameId::Kind kind)
     {
         return operatorNameIds.intern(OperatorNameId(kind));
     }
@@ -609,7 +609,7 @@ const TemplateNameId *Control::templateNameId(const Identifier *id,
 const DestructorNameId *Control::destructorNameId(const Identifier *id)
 { return d->findOrInsertDestructorNameId(id); }
 
-const OperatorNameId *Control::operatorNameId(int kind)
+const OperatorNameId *Control::operatorNameId(OperatorNameId::Kind kind)
 { return d->findOrInsertOperatorNameId(kind); }
 
 const ConversionNameId *Control::conversionNameId(const FullySpecifiedType &type)
diff --git a/src/shared/cplusplus/Control.h b/src/shared/cplusplus/Control.h
index 69c6dceae6a2b4940383c3ac705005fc75d9d64f..930b1beacfc62aca264741be838a33229279b521 100644
--- a/src/shared/cplusplus/Control.h
+++ b/src/shared/cplusplus/Control.h
@@ -50,6 +50,7 @@
 #define CPLUSPLUS_CONTROL_H
 
 #include "CPlusPlusForwardDeclarations.h"
+#include "Names.h"
 
 namespace CPlusPlus {
 
@@ -74,7 +75,7 @@ public:
     const DestructorNameId *destructorNameId(const Identifier *id);
 
     /// Returns the canonical operator name id.
-    const OperatorNameId *operatorNameId(int operatorId);
+    const OperatorNameId *operatorNameId(OperatorNameId::Kind operatorId);
 
     /// Returns the canonical conversion name id.
     const ConversionNameId *conversionNameId(const FullySpecifiedType &type);
diff --git a/src/shared/cplusplus/Literals.cpp b/src/shared/cplusplus/Literals.cpp
index 9d1bf652254b715b2cb4e7d12901cb597cf918c5..398821ccc7ddb1f8fcf52c9bdca72d7f2c132acc 100644
--- a/src/shared/cplusplus/Literals.cpp
+++ b/src/shared/cplusplus/Literals.cpp
@@ -56,7 +56,7 @@ using namespace CPlusPlus;
 
 ////////////////////////////////////////////////////////////////////////////////
 Literal::Literal(const char *chars, unsigned size)
-    : _index(0), _next(0)
+    : _next(0), _index(0)
 {
     _chars = new char[size + 1];
 
diff --git a/src/shared/cplusplus/Literals.h b/src/shared/cplusplus/Literals.h
index 6c1e958b6ce7fa3502437dd65bd8eb2ad7c8e1e4..7e69efc59ff910713a78e3215f285bd21ba8b36c 100644
--- a/src/shared/cplusplus/Literals.h
+++ b/src/shared/cplusplus/Literals.h
@@ -80,15 +80,15 @@ public:
 
     bool equalTo(const Literal *other) const;
 
+    Literal *_next; // ## private
+
 private:
     char *_chars;
     unsigned _size;
     unsigned _hashCode;
 
 public:
-    // ### private
-    unsigned _index;
-    Literal *_next;
+    unsigned _index;     // ### private
 };
 
 class CPLUSPLUS_EXPORT StringLiteral: public Literal
diff --git a/src/shared/cplusplus/Names.cpp b/src/shared/cplusplus/Names.cpp
index 63ff03f38cc378966f32a6341d3b3de3c750a628..56e15611664d3c37f164fc7d4161178a9afab6a3 100644
--- a/src/shared/cplusplus/Names.cpp
+++ b/src/shared/cplusplus/Names.cpp
@@ -153,7 +153,7 @@ bool TemplateNameId::isEqualTo(const Name *other) const
     return true;
 }
 
-OperatorNameId::OperatorNameId(int kind)
+OperatorNameId::OperatorNameId(Kind kind)
     : _kind(kind)
 { }
 
@@ -163,7 +163,7 @@ OperatorNameId::~OperatorNameId()
 void OperatorNameId::accept0(NameVisitor *visitor) const
 { visitor->visit(this); }
 
-int OperatorNameId::kind() const
+OperatorNameId::Kind OperatorNameId::kind() const
 { return _kind; }
 
 const Identifier *OperatorNameId::identifier() const
diff --git a/src/shared/cplusplus/Names.h b/src/shared/cplusplus/Names.h
index 3a894a351e6627283751be8f4436d325df7ece21..62d290a91f28cfbdb1487e67f6a5682ca6e13e74 100644
--- a/src/shared/cplusplus/Names.h
+++ b/src/shared/cplusplus/Names.h
@@ -193,10 +193,10 @@ public:
     };
 
 public:
-    OperatorNameId(int kind);
+    OperatorNameId(Kind kind);
     virtual ~OperatorNameId();
 
-    int kind() const;
+    Kind kind() const;
 
     virtual const Identifier *identifier() const;
     virtual bool isEqualTo(const Name *other) const;
@@ -208,7 +208,7 @@ protected:
     virtual void accept0(NameVisitor *visitor) const;
 
 private:
-    int _kind;
+    Kind _kind;
 };
 
 class CPLUSPLUS_EXPORT ConversionNameId: public Name
diff --git a/src/shared/cplusplus/Scope.cpp b/src/shared/cplusplus/Scope.cpp
index b500f178cb82b25c94c2152470fcb8f0d14bb47a..87655be6c3465e91350734f1df5eb9ff8192eb80 100644
--- a/src/shared/cplusplus/Scope.cpp
+++ b/src/shared/cplusplus/Scope.cpp
@@ -95,7 +95,7 @@ public:
     iterator lastSymbol() const;
 
     Symbol *lookat(const Identifier *id) const;
-    Symbol *lookat(int operatorId) const;
+    Symbol *lookat(OperatorNameId::Kind operatorId) const;
 
 private:
     /// Returns the hash value for the given Symbol.
@@ -186,7 +186,7 @@ Symbol *SymbolTable::lookat(const Identifier *id) const
     return symbol;
 }
 
-Symbol *SymbolTable::lookat(int operatorId) const
+Symbol *SymbolTable::lookat(OperatorNameId::Kind operatorId) const
 {
     if (! _hash)
         return 0;
@@ -290,7 +290,7 @@ Scope::iterator Scope::lastMember() const
 Symbol *Scope::find(const Identifier *id) const
 { return _members ? _members->lookat(id) : 0; }
 
-Symbol *Scope::find(int operatorId) const
+Symbol *Scope::find(OperatorNameId::Kind operatorId) const
 { return _members ? _members->lookat(operatorId) : 0; }
 
 /// Set the start offset of the scope
diff --git a/src/shared/cplusplus/Scope.h b/src/shared/cplusplus/Scope.h
index 47114111ba0d675995265f3028cfb15bb192c82f..d2ae2f9c471d8e21d2fde2b06a80119ffd4f11cd 100644
--- a/src/shared/cplusplus/Scope.h
+++ b/src/shared/cplusplus/Scope.h
@@ -51,6 +51,7 @@
 
 #include "CPlusPlusForwardDeclarations.h"
 #include "Symbol.h"
+#include "Names.h"
 
 namespace CPlusPlus {
 
@@ -81,7 +82,7 @@ public:
     iterator lastMember() const;
 
     Symbol *find(const Identifier *id) const;
-    Symbol *find(int operatorId) const;
+    Symbol *find(OperatorNameId::Kind operatorId) const;
 
     /// Set the start offset of the scope
     unsigned startOffset() const;
diff --git a/src/shared/cplusplus/Symbol.cpp b/src/shared/cplusplus/Symbol.cpp
index 5d46bc774ad1d610fbb261b9c0d72d90d832ea4c..f373f7fd17b4da03a84b645303918a0b13289c02 100644
--- a/src/shared/cplusplus/Symbol.cpp
+++ b/src/shared/cplusplus/Symbol.cpp
@@ -112,12 +112,16 @@ private:
 
 Symbol::Symbol(TranslationUnit *translationUnit, unsigned sourceLocation, const Name *name)
     : _name(0),
+      _scope(0),
+      _next(0),
+      _fileId(0),
+      _sourceLocation(0),
       _hashCode(0),
       _storage(Symbol::NoStorage),
       _visibility(Symbol::Public),
-      _scope(0),
       _index(0),
-      _next(0),
+      _line(0),
+      _column(0),
       _isGenerated(false),
       _isDeprecated(false),
       _isUnavailable(false)
diff --git a/src/shared/cplusplus/Symbol.h b/src/shared/cplusplus/Symbol.h
index 96d8707cdb92d727cb8f785bee7f24fe3e6e941c..3f9411b46486b9ae76b310747bcb49efe8e86a00 100644
--- a/src/shared/cplusplus/Symbol.h
+++ b/src/shared/cplusplus/Symbol.h
@@ -319,15 +319,15 @@ protected:
     virtual void visitSymbol0(SymbolVisitor *visitor) = 0;
 
 private:
-    unsigned _sourceLocation;
     const Name *_name;
+    Scope *_scope;
+    Symbol *_next;
+    const StringLiteral *_fileId;
+    unsigned _sourceLocation;
     unsigned _hashCode;
     int _storage;
     int _visibility;
-    Scope *_scope;
     unsigned _index;
-    Symbol *_next;
-    const StringLiteral *_fileId;
     unsigned _line;
     unsigned _column;
 
diff --git a/src/shared/cplusplus/Symbols.cpp b/src/shared/cplusplus/Symbols.cpp
index 7dae77921796c37d1284c962fe6b2c1c684a232b..dd39b066549a56643236983782efe8db178ffd38 100644
--- a/src/shared/cplusplus/Symbols.cpp
+++ b/src/shared/cplusplus/Symbols.cpp
@@ -681,10 +681,10 @@ void ObjCBaseProtocol::visitSymbol0(SymbolVisitor *visitor)
 { visitor->visit(this); }
 
 ObjCClass::ObjCClass(TranslationUnit *translationUnit, unsigned sourceLocation, const Name *name):
-        Scope(translationUnit, sourceLocation, name),
-        _isInterface(false),
-        _categoryName(0),
-        _baseClass(0)
+    Scope(translationUnit, sourceLocation, name),
+    _categoryName(0),
+    _baseClass(0),
+    _isInterface(false)
 {
 }
 
@@ -992,9 +992,9 @@ ObjCPropertyDeclaration::ObjCPropertyDeclaration(TranslationUnit *translationUni
                                                  unsigned sourceLocation,
                                                  const Name *name):
     Symbol(translationUnit, sourceLocation, name),
-    _propertyAttributes(None),
     _getterName(0),
-    _setterName(0)
+    _setterName(0),
+    _propertyAttributes(None)
 {}
 
 ObjCPropertyDeclaration::~ObjCPropertyDeclaration()
diff --git a/src/shared/cplusplus/Symbols.h b/src/shared/cplusplus/Symbols.h
index dd7fe67a1a4e084b885566f772234ab18beb6f28..cd618a9c876cee6f54b9e71854b002b1ae79a58c 100644
--- a/src/shared/cplusplus/Symbols.h
+++ b/src/shared/cplusplus/Symbols.h
@@ -171,8 +171,8 @@ protected:
     virtual void visitSymbol0(SymbolVisitor *visitor);
 
 private:
-    FullySpecifiedType _type;
     const StringLiteral *_initializer;
+    FullySpecifiedType _type;
 };
 
 class CPLUSPLUS_EXPORT TypenameArgument: public Symbol
@@ -531,8 +531,6 @@ public:
 
 protected:
     virtual void visitSymbol0(SymbolVisitor *visitor);
-
-private:
 };
 
 class CPLUSPLUS_EXPORT ObjCBaseProtocol: public Symbol
@@ -552,8 +550,6 @@ public:
 
 protected:
     virtual void visitSymbol0(SymbolVisitor *visitor);
-
-private:
 };
 
 class CPLUSPLUS_EXPORT ObjCForwardProtocolDeclaration: public Symbol, public Type
@@ -647,8 +643,6 @@ protected:
     virtual void visitSymbol0(SymbolVisitor *visitor);
     virtual void accept0(TypeVisitor *visitor);
     virtual bool matchType0(const Type *otherType, TypeMatcher *matcher) const;
-
-private:
 };
 
 class CPLUSPLUS_EXPORT ObjCClass: public Scope, public Type
@@ -695,10 +689,10 @@ protected:
     virtual bool matchType0(const Type *otherType, TypeMatcher *matcher) const;
 
 private:
-    bool _isInterface;
     const Name *_categoryName;
     ObjCBaseClass * _baseClass;
     std::vector<ObjCBaseProtocol *> _protocols;
+    bool _isInterface;
 };
 
 class CPLUSPLUS_EXPORT ObjCMethod: public Scope, public Type
@@ -808,10 +802,10 @@ protected:
     virtual void visitSymbol0(SymbolVisitor *visitor);
 
 private:
-    FullySpecifiedType _type;
-    int _propertyAttributes;
     const Name *_getterName;
     const Name *_setterName;
+    FullySpecifiedType _type;
+    int _propertyAttributes;
 };
 
 } // end of namespace CPlusPlus