diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/AssemblyReferenceNode.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/AssemblyReferenceNode.cs
index 85348732d9b..43d47b85758 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/AssemblyReferenceNode.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/AssemblyReferenceNode.cs
@@ -62,7 +62,7 @@ private struct AssemblyMSBuildProjectionInfo
         /// The name of the assembly this reference represents.
         /// </summary>
         /// <value></value>
-        /*internal, but public for FSharp.Project.dll*/ public System.Reflection.AssemblyName AssemblyName
+        public System.Reflection.AssemblyName AssemblyName
         {
             get
             {
@@ -75,7 +75,7 @@ private struct AssemblyMSBuildProjectionInfo
         /// machine. It can be different from the AssemblyName property because it can
         /// be more specific.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public System.Reflection.AssemblyName ResolvedAssembly
+        public System.Reflection.AssemblyName ResolvedAssembly
         {
             get { return this.resolvedInfo.ResolvedAssemblyName; }
         }
@@ -120,7 +120,7 @@ public override string Caption
         }
 
         private Automation.OAAssemblyReference assemblyRef;
-        /*internal, but public for FSharp.Project.dll*/ public override object Object
+        public override object Object
         {
             get
             {
@@ -325,7 +325,7 @@ private bool IsSpecialFSharpCoreReference
             get { return ProjectMgr.CanUseTargetFSharpCoreReference && IsFSharpCoreReference(this) && ContainsUsagesOfTargetFSharpCoreVersionProperty(this); }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override NodeProperties CreatePropertiesObject()
+        public override NodeProperties CreatePropertiesObject()
         {
             if (IsSpecialFSharpCoreReference)
             {
@@ -338,7 +338,7 @@ private bool IsSpecialFSharpCoreReference
         /// <summary>
         /// Links a reference node to the project and hierarchy.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ override void BindReferenceData()
+        public override void BindReferenceData()
         {
             // BindReferenceData only happens for newly created AssemblyReferenceNodes (as opposed to loaded from fsproj)
             Debug.Assert(this.resolvedInfo.WasSuccessfullyResolved, "assembly was not resolved, we should not be trying to link a node to put in .fsproj file");
@@ -440,7 +440,7 @@ public override void Remove(bool removeFromStorage)
 	    /// Determines if this is node a valid node for painting the default reference icon.
 	    /// </summary>
 	    /// <returns></returns>
-	    public /*protected, but public for FSharp.Project.dll*/ override bool CanShowDefaultIcon()
+	    public override bool CanShowDefaultIcon()
  	    {
 		    if (String.IsNullOrEmpty(this.myAssemblyPath) || !File.Exists(this.myAssemblyPath))
 		    {
@@ -474,7 +474,7 @@ public void DoOneOffResolve()
             var result = this.ProjectMgr.Build(MsBuildTarget.ResolveAssemblyReferences);
             this.ResolveReference(result);
         }
-        internal /*protected, but public for FSharp.Project.dll*/ override void ResolveReference(BuildResult buildResult)
+        internal override void ResolveReference(BuildResult buildResult)
         {
             Debug.Assert(this.ItemNode != null && this.ItemNode.Item != null, "called ResolveReference before initializing ItemNode");
             this.ResolveFromBuiltProject(MSBuildItem.GetEvaluatedInclude(this.ItemNode.Item), buildResult);
@@ -687,7 +687,7 @@ private void OnAssemblyReferenceChangedOnDisk(object sender, FileChangedOnDiskEv
             }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override Guid GetBrowseLibraryGuid()
+        public override Guid GetBrowseLibraryGuid()
         {
             return VSConstants.guidCOMPLUSLibrary;
         }
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OANavigableProjectItems.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OANavigableProjectItems.cs
index 3e32fb4b96b..585ccd44e53 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OANavigableProjectItems.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OANavigableProjectItems.cs
@@ -32,9 +32,9 @@ public class OANavigableProjectItems : EnvDTE.ProjectItems
 
         #region properties
         /// <summary>
-        /// Defines an /*internal, but public for FSharp.Project.dll*/ public list of project items
+        /// Defines an public list of project items
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public IList<EnvDTE.ProjectItem> Items
+        public IList<EnvDTE.ProjectItem> Items
         {
             get
             {
@@ -45,7 +45,7 @@ public class OANavigableProjectItems : EnvDTE.ProjectItems
         /// <summary>
         /// Defines a relationship to the associated project.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public OAProject Project
+        public OAProject Project
         {
             get
             {
@@ -56,7 +56,7 @@ public class OANavigableProjectItems : EnvDTE.ProjectItems
         /// <summary>
         /// Defines the node that contains the items
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public HierarchyNode NodeWithItems
+        public HierarchyNode NodeWithItems
         {
             get
             {
@@ -258,7 +258,7 @@ public virtual IEnumerator GetEnumerator()
         /// Retrives a list of items associated with the current node.
         /// </summary>
         /// <returns>A List of project items</returns>
-        public /*protected, but public for FSharp.Project.dll*/ IList<EnvDTE.ProjectItem> GetListOfProjectItems()
+        public IList<EnvDTE.ProjectItem> GetListOfProjectItems()
         {
             return UIThread.DoOnUIThread(delegate() {
                 List<EnvDTE.ProjectItem> list = new List<EnvDTE.ProjectItem>();
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OAProjectItem.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OAProjectItem.cs
index e193f233613..d240ba075b3 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OAProjectItem.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OAProjectItem.cs
@@ -28,7 +28,7 @@ public class OAProjectItem<T> : EnvDTE.ProjectItem
         #endregion
 
         #region properties
-        public /*protected, but public for FSharp.Project.dll*/ T Node
+        public T Node
         {
             get
             {
@@ -39,7 +39,7 @@ public class OAProjectItem<T> : EnvDTE.ProjectItem
         /// <summary>
         /// Returns the automation project
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ OAProject Project
+        public OAProject Project
         {
             get
             {
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OAProjectItems.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OAProjectItems.cs
index 2746e29360d..ebf423a2113 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OAProjectItems.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OAProjectItems.cs
@@ -201,7 +201,7 @@ public override EnvDTE.ProjectItem AddFromFile(string fileName)
         /// <param name="path">The full path of the item to add.</param>
         /// <param name="op">The VSADDITEMOPERATION to use when adding the item.</param>
         /// <returns>A ProjectItem object. </returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual EnvDTE.ProjectItem AddItem(string path, VSADDITEMOPERATION op)
+        public virtual EnvDTE.ProjectItem AddItem(string path, VSADDITEMOPERATION op)
         {
             return UIThread.DoOnUIThread(delegate() {
                 if (this.Project == null || this.Project.Project == null || this.Project.Project.Site == null || this.Project.Project.IsClosed)
@@ -247,7 +247,7 @@ public override EnvDTE.ProjectItem AddFromFile(string fileName)
         /// <param name="result">The VSADDRESULT returned by the Add methods</param>
         /// <param name="path">The full path of the item added.</param>
         /// <returns>A ProjectItem object.</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual EnvDTE.ProjectItem EvaluateAddResult(VSADDRESULT result, string path)
+        public virtual EnvDTE.ProjectItem EvaluateAddResult(VSADDRESULT result, string path)
         {
             return UIThread.DoOnUIThread(delegate() {
                 if (result == VSADDRESULT.ADDRESULT_Success)
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OAProperties.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OAProperties.cs
index 50bda5edb6e..2fcbdfd77e0 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OAProperties.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/OAProperties.cs
@@ -184,7 +184,7 @@ public virtual object Parent
         /// Add properties to the collection of properties filtering only those properties which are com-visible and AutomationBrowsable
         /// </summary>
         /// <param name="targetType">The type of NodeProperties the we should filter on</param>
-        public /*protected, but public for FSharp.Project.dll*/ void AddPropertiesFromType(Type targetType)
+        public void AddPropertiesFromType(Type targetType)
         {
             Debug.Assert(targetType != null);
 
@@ -209,7 +209,7 @@ public virtual object Parent
         /// Creates a new OAProperty object and adds it to the current list of properties
         /// </summary>
         /// <param name="propertyInfo">The property to be associated with an OAProperty object</param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void AddProperty(PropertyInfo propertyInfo)
+        public virtual void AddProperty(PropertyInfo propertyInfo)
         {
             this.properties.Add(propertyInfo.Name, new OAProperty(this, propertyInfo));
         }
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/VSProject/OAReferenceBase.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/VSProject/OAReferenceBase.cs
index 591263c5825..b753e91f119 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/VSProject/OAReferenceBase.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Automation/VSProject/OAReferenceBase.cs
@@ -31,7 +31,7 @@ internal OAReferenceBase(RefType referenceNode)
         #endregion
 
         #region properties
-        public /*protected, but public for FSharp.Project.dll*/ RefType BaseReferenceNode
+        public RefType BaseReferenceNode
         {
             get { return referenceNode; }
         }
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ComReferenceNode.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ComReferenceNode.cs
index 9a46f493137..33e414edfc5 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ComReferenceNode.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ComReferenceNode.cs
@@ -104,7 +104,7 @@ public int MinorVersionNumber
             }
         }
         private Automation.OAComReference comReference;
-        /*internal, but public for FSharp.Project.dll*/ public override object Object
+        public override object Object
         {
             get
             {
@@ -219,7 +219,7 @@ internal ComReferenceNode(ProjectNode root, string filePath)
         /// <summary>
         /// Links a reference node to the project and hierarchy.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ override void BindReferenceData()
+        public override void BindReferenceData()
         {
             Debug.Assert(this.ItemNode != null, "The AssemblyName field has not been initialized");
 
@@ -240,7 +240,7 @@ internal ComReferenceNode(ProjectNode root, string filePath)
         /// Checks if a reference is already added. The method parses all references and compares the the FinalItemSpec and the Guid.
         /// </summary>
         /// <returns>true if the assembly has already been added.</returns>
-        public /*protected, but public for FSharp.Project.dll*/ override bool IsAlreadyAdded(out ReferenceNode existingNode)
+        public override bool IsAlreadyAdded(out ReferenceNode existingNode)
         {
             ReferenceContainerNode referencesFolder = this.ProjectMgr.FindChild(ReferenceContainerNode.ReferencesNodeVirtualName) as ReferenceContainerNode;
             Debug.Assert(referencesFolder != null, "Could not find the References node");
@@ -268,7 +268,7 @@ internal ComReferenceNode(ProjectNode root, string filePath)
         /// Determines if this is node a valid node for painting the default reference icon.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ override bool CanShowDefaultIcon()
+        public override bool CanShowDefaultIcon()
         {
             return !String.IsNullOrEmpty(this.installedFilePath);
         }
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ConfigProvider.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ConfigProvider.cs
index 19160614c1a..db78dcb1610 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ConfigProvider.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ConfigProvider.cs
@@ -41,7 +41,7 @@ public class ConfigProvider : IVsCfgProvider2, IVsProjectCfgProvider, IVsExtensi
         /// <summary>
         /// The associated project.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ ProjectNode ProjectMgr
+        public ProjectNode ProjectMgr
         {
             get
             {
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/DataObject.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/DataObject.cs
index ee937d49399..c03e4322a7c 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/DataObject.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/DataObject.cs
@@ -50,7 +50,7 @@ internal sealed class DataCacheEntry : IDisposable
                 #endregion
 
                 #region properties
-                /*internal, but public for FSharp.Project.dll*/ public FORMATETC Format
+                public FORMATETC Format
                 {
                         get
                         {
@@ -58,7 +58,7 @@ internal sealed class DataCacheEntry : IDisposable
                         }
                 }
 
-                /*internal, but public for FSharp.Project.dll*/ public long Data
+                public long Data
                 {
                         get
                         {
@@ -67,7 +67,7 @@ internal sealed class DataCacheEntry : IDisposable
                 }
 
                 [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-                /*internal, but public for FSharp.Project.dll*/ public DATADIR DataDir
+                public DATADIR DataDir
                 {
                         get
                         {
@@ -80,7 +80,7 @@ internal sealed class DataCacheEntry : IDisposable
                 /// <summary>
                 /// The IntPtr is data allocated that should be removed. It is allocated by the ProcessSelectionData method.
                 /// </summary>
-                /*internal, but public for FSharp.Project.dll*/ public DataCacheEntry(FORMATETC fmt, IntPtr data, DATADIR dir)
+                public DataCacheEntry(FORMATETC fmt, IntPtr data, DATADIR dir)
                 {
                         this.format = fmt;
                         this.data = (long)data;
@@ -138,22 +138,22 @@ private void Dispose(bool disposing)
         internal sealed class DataObject : IDataObject
         {
                 #region fields
-                /*internal, but public for FSharp.Project.dll*/ public const int DATA_S_SAMEFORMATETC = 0x00040130;
+                public const int DATA_S_SAMEFORMATETC = 0x00040130;
 
-                /*internal, but public for FSharp.Project.dll*/ public static readonly int DATA_E_FORMATETC = ForceCast(0x80040064);
+                public static readonly int DATA_E_FORMATETC = ForceCast(0x80040064);
 
                 EventSinkCollection map;
 
                 ArrayList entries;
                 #endregion
 
-                /*internal, but public for FSharp.Project.dll*/ public DataObject()
+                public DataObject()
                 {
                         this.map = new EventSinkCollection();
                         this.entries = new ArrayList();
                 }
 
-                /*internal, but public for FSharp.Project.dll*/ public void SetData(FORMATETC format, IntPtr data)
+                public void SetData(FORMATETC format, IntPtr data)
                 {
                         this.entries.Add(new DataCacheEntry(format, data, DATADIR.DATADIR_SET));
                 }
@@ -240,12 +240,12 @@ void IDataObject.SetData(FORMATETC[] fmt, STGMEDIUM[] m, int fRelease)
                 #endregion
 
                 #region static methods
-                /*internal, but public for FSharp.Project.dll*/ public static int ForceCast(uint i)
+                public static int ForceCast(uint i)
                 {
                         unchecked { return (int)i; }
                 }
 
-                /*internal, but public for FSharp.Project.dll*/ public static uint ForceCast(int i)
+                public static uint ForceCast(int i)
                 {
                         unchecked { return (uint)i; }
                 }
@@ -257,12 +257,12 @@ void IDataObject.SetData(FORMATETC[] fmt, STGMEDIUM[] m, int fRelease)
         internal static class DragDropHelper
         {
 #pragma warning disable 414
-                /*internal, but public for FSharp.Project.dll*/ internal static readonly ushort CF_VSREFPROJECTS = 0;
-                /*internal, but public for FSharp.Project.dll*/ internal static readonly ushort CF_VSSTGPROJECTS = 0;
-                /*internal, but public for FSharp.Project.dll*/ internal static readonly ushort CF_VSREFPROJECTITEMS = 0;
-                /*internal, but public for FSharp.Project.dll*/ internal static readonly ushort CF_VSSTGPROJECTITEMS = 0;
-                /*internal, but public for FSharp.Project.dll*/ internal static readonly ushort CF_PROJECTCLIPDESCRIPTOR = 0;
-                /*internal, but public for FSharp.Project.dll*/ internal static readonly ushort CF_VSPROJECTCLIPDESCRIPTOR = 0;
+                internal static readonly ushort CF_VSREFPROJECTS = 0;
+                internal static readonly ushort CF_VSSTGPROJECTS = 0;
+                internal static readonly ushort CF_VSREFPROJECTITEMS = 0;
+                internal static readonly ushort CF_VSSTGPROJECTITEMS = 0;
+                internal static readonly ushort CF_PROJECTCLIPDESCRIPTOR = 0;
+                internal static readonly ushort CF_VSPROJECTCLIPDESCRIPTOR = 0;
 #pragma warning restore 414
 
                 static DragDropHelper()
@@ -414,7 +414,7 @@ public static string GetSourceProjectPath(Microsoft.VisualStudio.OLE.Interop.IDa
                 /// </summary>
                 /// <param name="dropHandle"></param>
                 /// <returns></returns>
-                /*internal, but public for FSharp.Project.dll*/ public static string GetData(IntPtr dropHandle)
+                public static string GetData(IntPtr dropHandle)
                 {
                         IntPtr data = UnsafeNativeMethods.GlobalLock(dropHandle);
                         try
@@ -437,7 +437,7 @@ public static string GetSourceProjectPath(Microsoft.VisualStudio.OLE.Interop.IDa
                         return null;
                 }
 
-                /*internal, but public for FSharp.Project.dll*/ public static void FillFormatEtc(ref FORMATETC template, ushort clipFormat, ref FORMATETC result)
+                public static void FillFormatEtc(ref FORMATETC template, ushort clipFormat, ref FORMATETC result)
                 {
                         if (clipFormat != 0)
                         {
@@ -450,7 +450,7 @@ public static string GetSourceProjectPath(Microsoft.VisualStudio.OLE.Interop.IDa
                         }
                 }
 
-                /*internal, but public for FSharp.Project.dll*/ public static void OleCopyFormatEtc(ref FORMATETC src, ref FORMATETC dest)
+                public static void OleCopyFormatEtc(ref FORMATETC src, ref FORMATETC dest)
                 {
                         dest.cfFormat = src.cfFormat;
                         dest.ptd = Marshal.AllocCoTaskMem(Marshal.SizeOf(src.ptd));
@@ -460,7 +460,7 @@ public static string GetSourceProjectPath(Microsoft.VisualStudio.OLE.Interop.IDa
                         dest.tymed = src.tymed;
                 }
 
-                /*internal, but public for FSharp.Project.dll*/ public static IntPtr CopyHGlobal(IntPtr data)
+                public static IntPtr CopyHGlobal(IntPtr data)
                 {
                         IntPtr src = UnsafeNativeMethods.GlobalLock(data);
                         int size = UnsafeNativeMethods.GlobalSize(data);
@@ -491,7 +491,7 @@ public static string GetSourceProjectPath(Microsoft.VisualStudio.OLE.Interop.IDa
                         return ptr;
                 }
 
-                /*internal, but public for FSharp.Project.dll*/ public static void CopyStringToHGlobal(string s, IntPtr data, int bufferSize)
+                public static void CopyStringToHGlobal(string s, IntPtr data, int bufferSize)
                 {
                         Int16 nullTerminator = 0;
                         int dwSize = Marshal.SizeOf(nullTerminator);
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/DependentFileNode.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/DependentFileNode.cs
index 7807dc77049..da1114a4dc2 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/DependentFileNode.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/DependentFileNode.cs
@@ -83,7 +83,7 @@ public override object GetIconHandle(bool open)
         /// <summary>
         /// Disable certain commands for dependent file nodes 
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ override int QueryStatusOnNode(Guid cmdGroup, uint cmd, IntPtr pCmdText, ref QueryStatusResult result)
+        public override int QueryStatusOnNode(Guid cmdGroup, uint cmd, IntPtr pCmdText, ref QueryStatusResult result)
         {
             if (cmdGroup == VsMenus.guidStandardCommandSet97)
             {
@@ -122,12 +122,12 @@ public override object GetIconHandle(bool open)
         /// DependentFileNodes node cannot be dragged.
         /// </summary>
         /// <returns>null</returns>
-        public /*protected, but public for FSharp.Project.dll*/ override StringBuilder PrepareSelectedNodesForClipBoard()
+        public override StringBuilder PrepareSelectedNodesForClipBoard()
         {
             return null;
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override NodeProperties CreatePropertiesObject()
+        public override NodeProperties CreatePropertiesObject()
         {
             return new DependentFileNodeProperties(this);
         }
@@ -136,7 +136,7 @@ public override object GetIconHandle(bool open)
         /// Redraws the state icon if the node is not excluded from source control.
         /// </summary>
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scc")]
-        public /*protected, but public for FSharp.Project.dll*/ override void UpdateSccStateIcons()
+        public override void UpdateSccStateIcons()
         {
             if (!this.ExcludeNodeFromScc)
             {
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/DocumentManager.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/DocumentManager.cs
index 5a8e6d6648f..fffc7b08acf 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/DocumentManager.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/DocumentManager.cs
@@ -32,7 +32,7 @@ internal abstract class DocumentManager
         #endregion
 
         #region properties
-        public /*protected, but public for FSharp.Project.dll*/ HierarchyNode Node
+        public HierarchyNode Node
         {
             get
             {
@@ -42,7 +42,7 @@ internal abstract class DocumentManager
         #endregion
         
         #region ctors
-        public /*protected, but public for FSharp.Project.dll*/ DocumentManager(HierarchyNode node)
+        public DocumentManager(HierarchyNode node)
         {
             this.node = node;
         }
@@ -145,7 +145,7 @@ public virtual void Save(bool saveIfDirty)
         /// <summary>
         /// Get document properties from RDT
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public void GetDocInfo(
+        public void GetDocInfo(
             out bool isOpen,     // true if the doc is opened
             out bool isDirty,    // true if the doc is dirty
             out bool isOpenedByUs, // true if opened by our project
@@ -186,7 +186,7 @@ public virtual void Save(bool saveIfDirty)
             }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ string GetOwnerCaption()
+        public string GetOwnerCaption()
         {
             Debug.Assert(this.node != null, "No node has been initialized for the document manager");
 
@@ -196,7 +196,7 @@ public virtual void Save(bool saveIfDirty)
             return (pvar as string);
         }
         
-        public /*protected, but public for FSharp.Project.dll*/ void CloseWindowFrame(ref IVsWindowFrame windowFrame)
+        public void CloseWindowFrame(ref IVsWindowFrame windowFrame)
         {
             if (windowFrame != null)
             {
@@ -211,7 +211,7 @@ public virtual void Save(bool saveIfDirty)
             }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ string GetFullPathForDocument()
+        public string GetFullPathForDocument()
         {
             string fullPath = String.Empty;
 
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FileChangeManager.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FileChangeManager.cs
index 5ca5e388f3f..e297ee61259 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FileChangeManager.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FileChangeManager.cs
@@ -36,7 +36,7 @@ private struct ObservedItemInfo
             /// <summary>
             /// Defines the nested project item that is to be reloaded.
             /// </summary>
-            /*internal, but public for FSharp.Project.dll*/ public uint ItemID
+            public uint ItemID
             {
                 get
                 {
@@ -52,7 +52,7 @@ private struct ObservedItemInfo
             /// <summary>
             /// Defines the file change cookie that is returned when listenning on file changes on the nested project item.
             /// </summary>
-            /*internal, but public for FSharp.Project.dll*/ public uint FileChangeCookie
+            public uint FileChangeCookie
             {
                 get
                 {
@@ -94,7 +94,7 @@ private struct ObservedItemInfo
         /// <summary>
         /// Overloaded ctor.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public FileChangeManager(IServiceProvider serviceProvider)
+        public FileChangeManager(IServiceProvider serviceProvider)
         {
             #region input validation
             if (serviceProvider == null)
@@ -180,7 +180,7 @@ int IVsFileChangeEvents.DirectoryChanged(string directory)
         /// Observe when the given file is updated on disk. In this case we do not care about the item id that represents the file in the hierarchy.
         /// </summary>
         /// <param name="fileName">File to observe.</param>
-        /*internal, but public for FSharp.Project.dll*/ public void ObserveItem(string fileName)
+        public void ObserveItem(string fileName)
         {
             this.ObserveItem(fileName, VSConstants.VSITEMID_NIL);
         }
@@ -190,7 +190,7 @@ int IVsFileChangeEvents.DirectoryChanged(string directory)
         /// </summary>
         /// <param name="fileName">File to observe.</param>
         /// <param name="id">The item id of the item to observe.</param>
-        /*internal, but public for FSharp.Project.dll*/ public void ObserveItem(string fileName, uint id)
+        public void ObserveItem(string fileName, uint id)
         {
             #region Input validation
             if (String.IsNullOrEmpty(fileName))
@@ -220,7 +220,7 @@ int IVsFileChangeEvents.DirectoryChanged(string directory)
         /// </summary>
         /// <param name="fileName">File to ignore observing.</param>
         /// <param name="ignore">Flag indicating whether or not to ignore changes (1 to ignore, 0 to stop ignoring).</param>
-        /*internal, but public for FSharp.Project.dll*/ public void IgnoreItemChanges(string fileName, bool ignore)
+        public void IgnoreItemChanges(string fileName, bool ignore)
         {
             #region Input validation
             if (String.IsNullOrEmpty(fileName))
@@ -241,7 +241,7 @@ int IVsFileChangeEvents.DirectoryChanged(string directory)
         /// Stop observing when the file is updated on disk.
         /// </summary>
         /// <param name="fileName">File to stop observing.</param>
-        /*internal, but public for FSharp.Project.dll*/ public void StopObservingItem(string fileName)
+        public void StopObservingItem(string fileName)
         {
             #region Input validation
             if (String.IsNullOrEmpty(fileName))
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FileDocumentManager.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FileDocumentManager.cs
index 17b23909e3a..78513e1c27e 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FileDocumentManager.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FileDocumentManager.cs
@@ -189,7 +189,7 @@ private int Open(bool newFile, bool openWith, uint editorFlags, ref Guid editorT
                 this.Node.OnInvalidateItems(this.Node.Parent);
 
                 // Bail since we are not able to open the item
-                // Do not return an error code otherwise an /*internal, but public for FSharp.Project.dll*/ public error message is shown. The scenario for this operation
+                // Do not return an error code otherwise an public error message is shown. The scenario for this operation
                 // normally is already a reaction to a dialog box telling that the item has been removed.
                 return VSConstants.S_FALSE;
             }
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FileNode.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FileNode.cs
index 6979ab1cb91..e2648851bb3 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FileNode.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FileNode.cs
@@ -219,7 +219,7 @@ internal FileNode(ProjectNode root, ProjectElement element, uint? hierarchyId =
 
         #region overridden methods
 
-        public /*protected, but public for FSharp.Project.dll*/ override NodeProperties CreatePropertiesObject()
+        public override NodeProperties CreatePropertiesObject()
         {
 #if SINGLE_FILE_GENERATOR
             ISingleFileGenerator generator = this.CreateSingleFileGenerator();
@@ -373,7 +373,7 @@ public override string GetMkDocument()
         /// Delete the item corresponding to the specified path from storage.
         /// </summary>
         /// <param name="path"></param>
-        public /*protected, but public for FSharp.Project.dll*/ override void DeleteFromStorage(string path)
+        public override void DeleteFromStorage(string path)
         {
             if (FSSafe.File.SafeExists(path))
             {
@@ -385,7 +385,7 @@ public override string GetMkDocument()
         /// <summary>
         /// Rename the underlying document based on the change the user just made to the edit label.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ int SetEditLabel(string label, string relativePath)
+        public int SetEditLabel(string label, string relativePath)
         {
             int returnValue = VSConstants.S_OK;
             uint oldId = this.ID;
@@ -461,7 +461,7 @@ internal override DocumentManager GetDocumentManager()
         /// node delegate to the project and a folder/project node to itself.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ override HierarchyNode GetDragTargetHandlerNode()
+        public override HierarchyNode GetDragTargetHandlerNode()
         {
             Debug.Assert(this.ProjectMgr != null, " The project manager is null for the filenode");
             HierarchyNode handlerNode = this;
@@ -472,7 +472,7 @@ internal override DocumentManager GetDocumentManager()
             return handlerNode;
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override int ExecCommandOnNode(Guid cmdGroup, uint cmd, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
+        public override int ExecCommandOnNode(Guid cmdGroup, uint cmd, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
         {
             if (this.ProjectMgr == null || this.ProjectMgr.IsClosed)
             {
@@ -574,7 +574,7 @@ internal override int QueryStatusOnNode(Guid cmdGroup, uint cmd, IntPtr pCmdText
         }
 
 
-        public /*protected, but public for FSharp.Project.dll*/ override void DoDefaultAction()
+        public override void DoDefaultAction()
         {
             CCITracing.TraceCall();
             FileDocumentManager manager = this.GetDocumentManager() as FileDocumentManager;
@@ -588,7 +588,7 @@ internal override int QueryStatusOnNode(Guid cmdGroup, uint cmd, IntPtr pCmdText
         /// <param name="docData">A pointer to the document in the rdt</param>
         /// <param name="newFilePath">The new file path to the document</param>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ override int AfterSaveItemAs(IntPtr docData, string newFilePath)
+        public override int AfterSaveItemAs(IntPtr docData, string newFilePath)
         {
             if (String.IsNullOrEmpty(newFilePath))
             {
@@ -694,7 +694,7 @@ internal override int QueryStatusOnNode(Guid cmdGroup, uint cmd, IntPtr pCmdText
         /// Determines if this is node a valid node for painting the default file icon.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ override bool CanShowDefaultIcon()
+        public override bool CanShowDefaultIcon()
         {
             string moniker = this.GetMkDocument();
 
@@ -726,7 +726,7 @@ public virtual string FileName
         /// </summary>
         /// <param name="showMessage">true if user should be presented for UI in case the file is not present</param>
         /// <returns>true if file is on disk</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual bool IsFileOnDisk(bool showMessage)
+        public virtual bool IsFileOnDisk(bool showMessage)
         {
             bool fileExist = IsFileOnDisk(this.Url);
 
@@ -749,7 +749,7 @@ public virtual string FileName
         /// </summary>
         /// <param name="path">Url representing the file</param>
         /// <returns>True if the file exist</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual bool IsFileOnDisk(string path)
+        public virtual bool IsFileOnDisk(string path)
         {
             return FSSafe.File.SafeExists(path);
         }
@@ -762,7 +762,7 @@ public virtual string FileName
         /// <param name="newParentId">The new parent id of the item.</param>
         /// <returns>The newly added FileNode.</returns>
         /// <remarks>While a new node will be used to represent the item, the underlying MSBuild item will be the same and as a result file properties saved in the project file will not be lost.</remarks>
-        public /*protected, but public for FSharp.Project.dll*/ virtual FileNode RenameFileNode(string oldFileName, string newFileName, uint newParentId)
+        public virtual FileNode RenameFileNode(string oldFileName, string newFileName, uint newParentId)
         {
             if (string.Compare(oldFileName, newFileName, StringComparison.Ordinal) == 0)
             {
@@ -874,7 +874,7 @@ public virtual string FileName
         /// Rename all childnodes
         /// </summary>
         /// <param name="parentNode">The newly added Parent node.</param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void RenameChildNodes(FileNode parentNode)
+        public virtual void RenameChildNodes(FileNode parentNode)
         {
             foreach (HierarchyNode child in GetChildNodes())
             {
@@ -914,7 +914,7 @@ public virtual string FileName
         /// </summary>
         /// <param name="fileThatFailed"> The file that failed to be renamed.</param>
         /// <param name="originalFileName">The original filenamee</param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void RecoverFromRenameFailure(string fileThatFailed, string originalFileName)
+        public virtual void RecoverFromRenameFailure(string fileThatFailed, string originalFileName)
         {
             // TODO does this do anything useful?  did it ever change in the first place?
             if (this.ItemNode != null && !String.IsNullOrEmpty(originalFileName))
@@ -924,7 +924,7 @@ public virtual string FileName
             }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
+        public override bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
         {
             if (deleteOperation == __VSDELETEITEMOPERATION.DELITEMOP_DeleteFromStorage)
             {
@@ -938,7 +938,7 @@ public virtual string FileName
         /// </summary>
         /// <param name="oldName">Previous name in storage</param>
         /// <param name="newName">New name in storage</param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void RenameInStorage(string oldName, string newName)
+        public virtual void RenameInStorage(string oldName, string newName)
         {
             File.Move(oldName, newName);
         }
@@ -948,7 +948,7 @@ public virtual string FileName
         /// factory method for creating single file generators.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual ISingleFileGenerator CreateSingleFileGenerator()
+        public virtual ISingleFileGenerator CreateSingleFileGenerator()
         {
             return new SingleFileGenerator(this.ProjectMgr);
         }
@@ -962,7 +962,7 @@ public virtual string FileName
         /// <param name="flags">The flags that are associated to the files.</param>
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scc")]
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "scc")]
-        public /*protected, but public for FSharp.Project.dll*/ override void GetSccSpecialFiles(string sccFile, IList<string> files, IList<tagVsSccFilesFlags> flags)
+        public override void GetSccSpecialFiles(string sccFile, IList<string> files, IList<tagVsSccFilesFlags> flags)
         {
             if (this.ExcludeNodeFromScc)
             {
@@ -992,7 +992,6 @@ public virtual string FileName
         /// Get's called to rename the eventually running document this hierarchyitem points to
         /// </summary>
         /// returns FALSE if the doc can not be renamed
-        /*internal, but public for FSharp.Project.dll*/
         public bool RenameDocument(string oldName, string newName)
         {
             IVsRunningDocumentTable pRDT = this.GetService(typeof(IVsRunningDocumentTable)) as IVsRunningDocumentTable;
@@ -1129,7 +1128,6 @@ private void RenameCaseOnlyChange(string newFileName)
         /// </summary>
         /// <param name="sender">FileNode sending it</param>
         /// <param name="e">Node event args</param>
-        /*internal, but public for FSharp.Project.dll*/
         internal virtual void OnCustomToolChanged(object sender, HierarchyNodeEventArgs e)
         {
             this.RunGenerator();
@@ -1140,7 +1138,6 @@ internal virtual void OnCustomToolChanged(object sender, HierarchyNodeEventArgs
         /// </summary>
         /// <param name="sender">FileNode sending it</param>
         /// <param name="e">Node event args</param>
-        /*internal, but public for FSharp.Project.dll*/
         internal virtual void OnCustomToolNameSpaceChanged(object sender, HierarchyNodeEventArgs e)
         {
             this.RunGenerator();
@@ -1153,7 +1150,6 @@ internal virtual void OnCustomToolNameSpaceChanged(object sender, HierarchyNodeE
         /// <summary>
         /// Runs a generator.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/
         public void RunGenerator()
         {
             ISingleFileGenerator generator = this.CreateSingleFileGenerator();
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FolderNode.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FolderNode.cs
index 033ccd97645..4aa274f81e4 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FolderNode.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/FolderNode.cs
@@ -54,12 +54,12 @@ public override VsStateIcon StateIconIndex
         #endregion
 
         #region overridden methods
-        public /*protected, but public for FSharp.Project.dll*/ override NodeProperties CreatePropertiesObject()
+        public override NodeProperties CreatePropertiesObject()
         {
             return new FolderNodeProperties(this);
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override void DeleteFromStorage(string path)
+        public override void DeleteFromStorage(string path)
         {
             this.DeleteFolder(path);
         }
@@ -182,7 +182,7 @@ public override string GetMkDocument()
         /// </summary>
         /// <param name="files">The list of files to be placed under source control.</param>
         /// <param name="flags">The flags that are associated to the files.</param>
-        public /*protected, but public for FSharp.Project.dll*/ override void GetSccFiles(System.Collections.Generic.IList<string> files, System.Collections.Generic.IList<tagVsSccFilesFlags> flags)
+        public override void GetSccFiles(System.Collections.Generic.IList<string> files, System.Collections.Generic.IList<tagVsSccFilesFlags> flags)
         {
             return;
         }
@@ -195,7 +195,7 @@ public override string GetMkDocument()
         /// <param name="flags">The flags that are associated to the files.</param>
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scc")]
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "scc")]
-        public /*protected, but public for FSharp.Project.dll*/ override void GetSccSpecialFiles(string sccFile, IList<string> files, IList<tagVsSccFilesFlags> flags)
+        public override void GetSccSpecialFiles(string sccFile, IList<string> files, IList<tagVsSccFilesFlags> flags)
         {
             if (this.ExcludeNodeFromScc)
             {
@@ -232,7 +232,7 @@ public override string GetMkDocument()
         /// <summary>
         /// Recursevily walks the folder nodes and redraws the state icons
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ override void UpdateSccStateIcons()
+        public override void UpdateSccStateIcons()
         {
             for (HierarchyNode child = this.FirstChild; child != null; child = child.NextSibling)
             {
@@ -275,7 +275,7 @@ internal override int QueryStatusOnNode(Guid cmdGroup, uint cmd, IntPtr pCmdText
             return base.QueryStatusOnNode(cmdGroup, cmd, pCmdText, ref result);
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
+        public override bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
         {
             if (deleteOperation == __VSDELETEITEMOPERATION.DELITEMOP_DeleteFromStorage)
             {
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/HierarchyNode.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/HierarchyNode.cs
index e82ed83c232..a447cb7e08d 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/HierarchyNode.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/HierarchyNode.cs
@@ -60,7 +60,7 @@ public override string ToString()
         /// <summary>
         /// DropEffect as defined in oleidl.h
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public enum DropEffect
+        public enum DropEffect
         {
             None,
             Copy = 1,
@@ -262,7 +262,7 @@ public virtual NodeProperties NodeProperties
         /// Returns an object that is a special view over this object; this is the value
         /// returned by the Object property of the automation objects.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public virtual object Object
+        public virtual object Object
         {
             get { return this; }
         }
@@ -471,7 +471,7 @@ public bool HasParentNodeNameRelation
             }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ bool SourceDraggedOrCutOrCopied
+        public bool SourceDraggedOrCutOrCopied
         {
             get
             {
@@ -483,7 +483,7 @@ public bool HasParentNodeNameRelation
             }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ List<HierarchyNode> ItemsDraggedOrCutOrCopied
+        public List<HierarchyNode> ItemsDraggedOrCutOrCopied
         {
             get
             {
@@ -534,7 +534,7 @@ internal HierarchyNode(ProjectNode root)
         /// spacific for this object to the property browser.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual NodeProperties CreatePropertiesObject()
+        public virtual NodeProperties CreatePropertiesObject()
         {
             return null;
         }
@@ -560,8 +560,6 @@ public virtual void AddChild(HierarchyNode node)
                 throw new ArgumentNullException("node");
             }
 
-            var map = this.projectMgr.ItemIdMap;
-
             // make sure the node is in the map.
             Object nodeWithSameID = this.projectMgr.ItemIdMap[node.hierarchyId];
             if (!Object.ReferenceEquals(node, nodeWithSameID as HierarchyNode))
@@ -1067,7 +1065,7 @@ public virtual string GetRelationNameExtension()
         /// <summary>
         /// Close open document frame for a specific node.
         /// </summary> 
-        public /*protected, but public for FSharp.Project.dll*/ void CloseDocumentWindow(HierarchyNode node)
+        public void CloseDocumentWindow(HierarchyNode node)
         {
             // We walk the RDT looking for all running documents attached to this hierarchy and itemid. There
             // are cases where there may be two different editors (not views) open on the same document.
@@ -1127,7 +1125,7 @@ public virtual string GetRelationNameExtension()
         /// Redraws the state icon if the node is not excluded from source control.
         /// </summary>
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scc")]
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual void UpdateSccStateIcons()
+        public virtual void UpdateSccStateIcons()
         {
             if (!this.ExcludeNodeFromScc)
             {
@@ -1143,7 +1141,7 @@ public virtual string GetRelationNameExtension()
         /// items to let its parent accept the drop
         /// </summary>
         /// <returns>HierarchyNode that accept the drop handling</returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual HierarchyNode GetDragTargetHandlerNode()
+        public virtual HierarchyNode GetDragTargetHandlerNode()
         {
             return this;
         }
@@ -1152,7 +1150,7 @@ public virtual string GetRelationNameExtension()
         /// Add a new Folder to the project hierarchy.
         /// </summary>
         /// <returns>S_OK if succeeded, otherwise an error</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual int AddNewFolder()
+        public virtual int AddNewFolder()
         {
             // Check out the project file.
             if (!this.ProjectMgr.QueryEditProjectFile(false))
@@ -1234,7 +1232,7 @@ internal virtual int AddItemToHierarchy(HierarchyAddType addType)
         /// <summary>
         /// Overwritten in subclasses
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void DoDefaultAction()
+        public virtual void DoDefaultAction()
         {
             CCITracing.TraceCall();
         }
@@ -1243,7 +1241,7 @@ internal virtual int AddItemToHierarchy(HierarchyAddType addType)
         /// Handles the exclude from project command.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual int ExcludeFromProject()
+        public virtual int ExcludeFromProject()
         {
             Debug.Assert(this.ProjectMgr != null, "The project item " + this.ToString() + " has not been initialised correctly. It has a null ProjectMgr");
             this.Remove(false);
@@ -1254,7 +1252,7 @@ internal virtual int AddItemToHierarchy(HierarchyAddType addType)
         /// Handles the Show in Designer command.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual int ShowInDesigner(IList<HierarchyNode> selectedNodes)
+        public virtual int ShowInDesigner(IList<HierarchyNode> selectedNodes)
         {
             return (int)OleConstants.OLECMDERR_E_NOTSUPPORTED;
         }
@@ -1266,7 +1264,7 @@ internal virtual int AddItemToHierarchy(HierarchyAddType addType)
         /// <returns>A stringbuilder.</returns>
         /// <devremark>This method has to be public since seleceted nodes will call it.</devremark>
         [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "ClipBoard")]
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual StringBuilder PrepareSelectedNodesForClipBoard()
+        public virtual StringBuilder PrepareSelectedNodesForClipBoard()
         {
             Debug.Assert(this.ProjectMgr != null, " No project mananager available for this node " + ToString());
             Debug.Assert(this.ProjectMgr.ItemsDraggedOrCutOrCopied != null, " The itemsdragged list should have been initialized prior calling this method");
@@ -1312,7 +1310,7 @@ internal virtual int AddItemToHierarchy(HierarchyAddType addType)
         /// Returns the Cannonical Name
         /// </summary>
         /// <returns>Cannonical Name</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual string GetCanonicalName()
+        public virtual string GetCanonicalName()
         {
             return this.GetMkDocument();
         }
@@ -1333,7 +1331,7 @@ internal virtual DocumentManager GetDocumentManager()
         /// <param name="selectedNodes">list of selected nodes.</param>
         /// <param name="pointerToVariant">contains the location (x,y) at which to show the menu.</param>
         [SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", MessageId = "pointer")]
-        public /*protected, but public for FSharp.Project.dll*/ virtual int DisplayContextMenu(IList<HierarchyNode> selectedNodes, IntPtr pointerToVariant)
+        public virtual int DisplayContextMenu(IList<HierarchyNode> selectedNodes, IntPtr pointerToVariant)
         {
             if (selectedNodes == null || selectedNodes.Count == 0 || pointerToVariant == IntPtr.Zero)
             {
@@ -1384,7 +1382,7 @@ internal virtual DocumentManager GetDocumentManager()
         /// <param name="menuId">The context menu ID.</param>
         /// <param name="menuGroup">The GUID of the menu group.</param>
         /// <param name="points">The location at which to show the menu.</param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual int ShowContextMenu(int menuId, Guid menuGroup, POINTS points)
+        public virtual int ShowContextMenu(int menuId, Guid menuGroup, POINTS points)
         {
             IVsUIShell shell = this.projectMgr.Site.GetService(typeof(SVsUIShell)) as IVsUIShell;
 
@@ -1412,7 +1410,7 @@ internal virtual DocumentManager GetDocumentManager()
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cmdexecopt")]
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "n")]
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "pva")]
-        public /*protected, but public for FSharp.Project.dll*/ virtual int ExecCommandOnNode(Guid cmdGroup, uint cmd, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
+        public virtual int ExecCommandOnNode(Guid cmdGroup, uint cmd, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
         {
             if (this.projectMgr == null || this.projectMgr.IsClosed)
             {
@@ -1800,7 +1798,7 @@ internal virtual int QueryStatusOnNode(Guid cmdGroup, uint cmd, IntPtr pCmdText,
         /// <param name="command">The command to be executed.</param>
         /// <returns>A QueryStatusResult describing the status of the menu.</returns>
         [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "InCurrent")]
-        public /*protected, but public for FSharp.Project.dll*/ virtual bool DisableCmdInCurrentMode(Guid commandGroup, uint command)
+        public virtual bool DisableCmdInCurrentMode(Guid commandGroup, uint command)
         {
             if (this.ProjectMgr == null || this.ProjectMgr.IsClosed)
             {
@@ -2026,7 +2024,7 @@ internal virtual QueryStatusResult QueryStatusSelectionOnNodes(IList<HierarchyNo
         }
 
         #endregion
-        public /*protected, but public for FSharp.Project.dll*/ virtual bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
+        public virtual bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
         {
             return this.ProjectMgr.CanProjectDeleteItems;
         }
@@ -2035,7 +2033,7 @@ internal virtual QueryStatusResult QueryStatusSelectionOnNodes(IList<HierarchyNo
         /// Overwrite this method to tell that you support the default icon for this node.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual bool CanShowDefaultIcon()
+        public virtual bool CanShowDefaultIcon()
         {
             return false;
         }
@@ -2046,7 +2044,7 @@ internal virtual QueryStatusResult QueryStatusSelectionOnNodes(IList<HierarchyNo
         /// <param name="docData">A pointer to the rdt</param>
         /// <param name="newName">The newName of the item</param>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual int AfterSaveItemAs(IntPtr docData, string newName)
+        public virtual int AfterSaveItemAs(IntPtr docData, string newName)
         {
             throw new NotImplementedException();
         }
@@ -2054,7 +2052,7 @@ internal virtual QueryStatusResult QueryStatusSelectionOnNodes(IList<HierarchyNo
         /// <summary>
         /// The method that does the cleanup.
         /// </summary>
-        /// <param name="disposing">Is the Dispose called by some /*internal, but public for FSharp.Project.dll*/ public member, or it is called by from GC.</param>
+        /// <param name="disposing">Is the Dispose called by some public member, or it is called by from GC.</param>
         protected virtual void Dispose(bool disposing)
         {
             if (this.isDisposed)
@@ -2080,7 +2078,7 @@ protected virtual void Dispose(bool disposing)
         /// </summary>
         /// <param name="files">The files to which an array of VSADDFILEFLAGS has to be specified.</param>
         /// <returns></returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual VSADDFILEFLAGS[] GetAddFileFlags(string[] files)
+        public virtual VSADDFILEFLAGS[] GetAddFileFlags(string[] files)
         {
             if (files == null || files.Length == 0)
             {
@@ -2102,7 +2100,7 @@ protected virtual void Dispose(bool disposing)
         /// </summary>
         /// <param name="files">The files to which an array of VSADDFILEFLAGS has to be specified.</param>
         /// <returns></returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual VSQUERYADDFILEFLAGS[] GetQueryAddFileFlags(string[] files)
+        public virtual VSQUERYADDFILEFLAGS[] GetQueryAddFileFlags(string[] files)
         {
             if (files == null || files.Length == 0)
             {
@@ -2124,7 +2122,7 @@ protected virtual void Dispose(bool disposing)
         /// </summary>
         /// <param name="files">The files to which an array of VSREMOVEFILEFLAGS has to be specified.</param>
         /// <returns></returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual VSREMOVEFILEFLAGS[] GetRemoveFileFlags(string[] files)
+        public virtual VSREMOVEFILEFLAGS[] GetRemoveFileFlags(string[] files)
         {
             if (files == null || files.Length == 0)
             {
@@ -2146,7 +2144,7 @@ protected virtual void Dispose(bool disposing)
         /// </summary>
         /// <param name="files">The files to which an array of VSQUERYREMOVEFILEFLAGS has to be specified.</param>
         /// <returns></returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual VSQUERYREMOVEFILEFLAGS[] GetQueryRemoveFileFlags(string[] files)
+        public virtual VSQUERYREMOVEFILEFLAGS[] GetQueryRemoveFileFlags(string[] files)
         {
             if (files == null || files.Length == 0)
             {
@@ -2169,7 +2167,7 @@ protected virtual void Dispose(bool disposing)
         /// <param name="files">The list of files to be placed under source control.</param>
         /// <param name="flags">The flags that are associated to the files.</param>
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scc")]
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual void GetSccFiles(IList<string> files, IList<tagVsSccFilesFlags> flags)
+        public virtual void GetSccFiles(IList<string> files, IList<tagVsSccFilesFlags> flags)
         {
             if (this.ExcludeNodeFromScc)
             {
@@ -2205,7 +2203,7 @@ protected virtual void Dispose(bool disposing)
         /// <param name="flags">The flags that are associated to the files.</param>
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scc")]
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "scc")]
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual void GetSccSpecialFiles(string sccFile, IList<string> files, IList<tagVsSccFilesFlags> flags)
+        public virtual void GetSccSpecialFiles(string sccFile, IList<string> files, IList<tagVsSccFilesFlags> flags)
         {
             if (this.ExcludeNodeFromScc)
             {
@@ -2227,7 +2225,7 @@ protected virtual void Dispose(bool disposing)
         /// Delete the item corresponding to the specified path from storage.
         /// </summary>
         /// <param name="path">Url of the item to delete</param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void DeleteFromStorage(string path)
+        public virtual void DeleteFromStorage(string path)
         {
         }
 
@@ -2236,7 +2234,7 @@ protected virtual void Dispose(bool disposing)
         /// Determines whether a file change should be ignored or not.
         /// </summary>
         /// <param name="ignoreFlag">Flag indicating whether or not to ignore changes (true to ignore changes).</param>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual int IgnoreItemFileChanges(bool ignoreFlag)
+        public virtual int IgnoreItemFileChanges(bool ignoreFlag)
         {
             return VSConstants.E_NOTIMPL;
         }
@@ -2246,7 +2244,7 @@ protected virtual void Dispose(bool disposing)
         /// </summary>
         /// <returns>True if the project item is reloadable.</returns>
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Reloadable")]
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual bool IsItemReloadable()
+        public virtual bool IsItemReloadable()
         {
             return false;
         }
@@ -2255,7 +2253,7 @@ protected virtual void Dispose(bool disposing)
         /// Reloads an item.
         /// </summary>
         /// <param name="reserved">Reserved parameter defined at the IVsPersistHierarchyItem2::ReloadItem parameter.</param>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual int ReloadItem(uint reserved)
+        public virtual int ReloadItem(uint reserved)
         {
             return VSConstants.E_NOTIMPL;
         }
@@ -2265,7 +2263,7 @@ protected virtual void Dispose(bool disposing)
         /// Handle the Copy operation to the clipboard
         /// This method is typically overriden on the project node
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual int CopyToClipboard()
+        public virtual int CopyToClipboard()
         {
             return VSConstants.E_NOTIMPL;
         }
@@ -2274,7 +2272,7 @@ protected virtual void Dispose(bool disposing)
         /// Handle the Cut operation to the clipboard
         /// This method is typically overriden on the project node
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual int CutToClipboard()
+        public virtual int CutToClipboard()
         {
             return VSConstants.E_NOTIMPL;
         }
@@ -2283,7 +2281,7 @@ protected virtual void Dispose(bool disposing)
         /// Handle the paste from Clipboard command.
         /// This method is typically overriden on the project node
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual int PasteFromClipboard(HierarchyNode targetNode)
+        public virtual int PasteFromClipboard(HierarchyNode targetNode)
         {
             return VSConstants.E_NOTIMPL;
         }
@@ -2292,7 +2290,7 @@ protected virtual void Dispose(bool disposing)
         /// Determines if the paste command should be allowed.
         /// This method is typically overriden on the project node
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual bool AllowPasteCommand()
+        public virtual bool AllowPasteCommand()
         {
             return false;
         }
@@ -2302,7 +2300,7 @@ protected virtual void Dispose(bool disposing)
         /// This method is typically overriden on the project node
         /// </summary>
         /// <param name="value">true for register, false for unregister</param>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual void RegisterClipboardNotifications(bool value)
+        public virtual void RegisterClipboardNotifications(bool value)
         {
             return;
         }
@@ -2312,11 +2310,6 @@ protected virtual void Dispose(bool disposing)
 
         public void OnItemAdded(HierarchyNode parent, HierarchyNode child)
         {
-            if (null != parent.onChildAdded)
-            {
-                HierarchyNodeEventArgs args = new HierarchyNodeEventArgs(child);
-                parent.onChildAdded(parent, args);
-            }
             if (parent == null)
             {
                 throw new ArgumentNullException("parent");
@@ -2327,10 +2320,15 @@ public void OnItemAdded(HierarchyNode parent, HierarchyNode child)
                 throw new ArgumentNullException("child");
             }
 
-            HierarchyNode foo;
-            foo = this.projectMgr == null ? this : this.projectMgr;
+            if (parent.onChildAdded != null)
+            {
+                HierarchyNodeEventArgs args = new HierarchyNodeEventArgs(child);
+                parent.onChildAdded(parent, args);
+            }
+
+            var root = this.projectMgr ?? this;
 
-            if (foo == this.projectMgr && (this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerHierarchyEvents) != 0)
+            if (root == this.projectMgr && (this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerHierarchyEvents) != 0)
             {
                 return;
             }
@@ -2343,7 +2341,7 @@ public void OnItemAdded(HierarchyNode parent, HierarchyNode child)
 
             HierarchyNode prev = child.PreviousSibling;
             uint prevId = (prev != null) ? prev.hierarchyId : VSConstants.VSITEMID_NIL;
-            foreach (IVsHierarchyEvents sink in foo.hierarchyEventSinks)
+            foreach (IVsHierarchyEvents sink in root.hierarchyEventSinks)
             {
                 int result = sink.OnItemAdded(parent.hierarchyId, prevId, child.hierarchyId);
                 if (ErrorHandler.Failed(result) && result != VSConstants.E_NOTIMPL)
@@ -2357,10 +2355,9 @@ public void OnItemAdded(HierarchyNode parent, HierarchyNode child)
 
         public void OnItemDeleted()
         {
-            HierarchyNode foo;
-            foo = this.projectMgr == null ? this : this.projectMgr;
+            var root = this.projectMgr ?? this;
 
-            if (foo == this.projectMgr && (this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerHierarchyEvents) != 0)
+            if (root == this.projectMgr && (this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerHierarchyEvents) != 0)
             {
                 return;
             }
@@ -2370,14 +2367,14 @@ public void OnItemDeleted()
                 this.projectMgr.ExtensibilityEventsHelper.FireItemRemoved(this);
             }
 
-            if (foo.hierarchyEventSinks.Count > 0)
+            if (root.hierarchyEventSinks.Count > 0)
             {
                 // Note that in some cases (deletion of project node for example), an Advise
                 // may be removed while we are iterating over it. To get around this problem we
                 // take a snapshot of the advise list and walk that.
                 List<IVsHierarchyEvents> clonedSink = new List<IVsHierarchyEvents>();
 
-                foreach (IVsHierarchyEvents anEvent in foo.hierarchyEventSinks)
+                foreach (IVsHierarchyEvents anEvent in root.hierarchyEventSinks)
                 {
                     clonedSink.Add(anEvent);
                 }
@@ -2400,15 +2397,14 @@ public void OnItemsAppended(HierarchyNode parent)
                 throw new ArgumentNullException("parent");
             }
 
-            HierarchyNode foo;
-            foo = this.projectMgr == null ? this : this.projectMgr;
+            var root = this.projectMgr ?? this;
 
-            if (foo == this.projectMgr && (this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerHierarchyEvents) != 0)
+            if (root == this.projectMgr && (this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerHierarchyEvents) != 0)
             {
                 return;
             }
 
-            foreach (IVsHierarchyEvents sink in foo.hierarchyEventSinks)
+            foreach (IVsHierarchyEvents sink in root.hierarchyEventSinks)
             {
                 int result = sink.OnItemsAppended(parent.hierarchyId);
 
@@ -2427,14 +2423,15 @@ public void OnPropertyChanged(HierarchyNode node, int propid, uint flags)
             {
                 throw new ArgumentNullException("node");
             }
-            HierarchyNode foo;
-            foo = this.projectMgr == null ? this : this.projectMgr;
-            if (foo == this.projectMgr && (this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerHierarchyEvents) != 0)
+
+            var root = this.projectMgr ?? this;
+            
+            if (root == this.projectMgr && (this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerHierarchyEvents) != 0)
             {
                 return;
             }
 
-            foreach (IVsHierarchyEvents sink in foo.hierarchyEventSinks)
+            foreach (IVsHierarchyEvents sink in root.hierarchyEventSinks)
             {
                 int result = sink.OnPropertyChanged(node.hierarchyId, propid, flags);
 
@@ -2452,14 +2449,15 @@ public void OnInvalidateItems(HierarchyNode parent)
             {
                 throw new ArgumentNullException("parent");
             }
-            HierarchyNode foo;
-            foo = this.projectMgr == null ? this : this.projectMgr;
-            if (foo == this.projectMgr && (this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerHierarchyEvents) != 0)
+
+            var root = this.projectMgr ?? this;
+
+            if (root == this.projectMgr && (this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerHierarchyEvents) != 0)
             {
                 return;
             }
 
-            foreach (IVsHierarchyEvents sink in foo.hierarchyEventSinks)
+            foreach (IVsHierarchyEvents sink in root.hierarchyEventSinks)
             {
                 int result = sink.OnInvalidateItems(parent.hierarchyId);
 
@@ -3140,7 +3138,7 @@ public virtual int Drop(Microsoft.VisualStudio.OLE.Interop.IDataObject pDataObje
         #endregion
 
         #region helper methods
-        /*internal, but public for FSharp.Project.dll*/ public HierarchyNode FindChild(string name)
+        public HierarchyNode FindChild(string name)
         {
             if (String.IsNullOrEmpty(name))
             {
@@ -3175,7 +3173,7 @@ public virtual int Drop(Microsoft.VisualStudio.OLE.Interop.IDataObject pDataObje
         /// </summary>
         /// <typeparam name="T">The type of hierachy node being serched for</typeparam>
         /// <param name="nodes">A list of nodes of type T</param>
-        /*internal, but public for FSharp.Project.dll*/ public void FindNodesOfType<T>(List<T> nodes)
+        public void FindNodesOfType<T>(List<T> nodes)
             where T : HierarchyNode
         {
             for (HierarchyNode n = this.FirstChild; n != null; n = n.NextSibling)
@@ -3190,7 +3188,7 @@ public virtual int Drop(Microsoft.VisualStudio.OLE.Interop.IDataObject pDataObje
             }
         }
 
-        /*internal, but public for FSharp.Project.dll*/ public void InstantiateItemsDraggedOrCutOrCopiedList()
+        public void InstantiateItemsDraggedOrCutOrCopiedList()
         {
             this.itemsDraggedOrCutOrCopied = new List<HierarchyNode>();
         }
@@ -3385,107 +3383,74 @@ string newTargetFrameworkMoniker
 
         private int CreateResourceDocDataHelper(FileNode f, uint itemidResource, out IVsPersistDocData persistDocData, out IVsTextLines textLines)
         {
-            int hr = VSConstants.E_FAIL;
-
-            /*
-            Guid CLSID_VsTextBuffer = new Guid("{8E7B96A8-E33D-11d0-A6D5-00C04FB67F6A}");
-            Guid iid = VSConstants.IID_IUnknown;
-            IntPtr docData = IntPtr.Zero;
-            */
-
-            IVsTextLines buffer;
             Type textLinesType = typeof(IVsTextLines);
             Guid riid = textLinesType.GUID;
             Guid clsid = typeof(VsTextBufferClass).GUID;
-            IntPtr docData = IntPtr.Zero;
 
             persistDocData = null;
             textLines = null;
 
-            try
-            {
-                /*
-                ILocalRegistry localReg = this.projectMgr.GetService(typeof(SLocalRegistry)) as ILocalRegistry;
-                hr = localReg.CreateInstance(CLSID_VsTextBuffer, null, ref iid, (uint)CLSCTX.CLSCTX_INPROC_SERVER, out docData);
-
-                if (!ErrorHandler.Succeeded(hr))
-                {
-                    return hr;
-                }
-                */
+            var buffer = (IVsTextLines)this.projectMgr.Package.CreateInstance(ref clsid, ref riid, textLinesType);
 
-                buffer = (IVsTextLines)this.projectMgr.Package.CreateInstance(ref clsid, ref riid, textLinesType);
-
-                if (buffer == null)
-                {
-                    return VSConstants.E_FAIL;
-                }
-
-                docData = Marshal.GetIUnknownForObject(buffer);
+            if (buffer == null)
+            {
+                return VSConstants.E_FAIL;
+            }
 
-                // persistDocData = Marshal.GetObjectForIUnknown(docData) as IVsPersistDocData;
-                persistDocData = buffer as IVsPersistDocData;
+            var docData = Marshal.GetIUnknownForObject(buffer);
 
-                if (persistDocData == null)
-                {
-                    return VSConstants.E_FAIL;
-                }
+            persistDocData = buffer as IVsPersistDocData;
 
-                IObjectWithSite siteObject = persistDocData as IObjectWithSite;
-                IOleServiceProvider site = GetService(typeof(IOleServiceProvider)) as IOleServiceProvider;
-                if (siteObject != null && site != null)
-                {
-                    siteObject.SetSite(site);
-                }
-                else
-                {
-                    // We need to set the site, and if we cannot, we need to fail
-                    Debug.Assert(false, "Cannot set site on VsTextBuffer!");
-                    return VSConstants.E_FAIL;
-                }
+            if (persistDocData == null)
+            {
+                return VSConstants.E_FAIL;
+            }
 
-                IVsRunningDocumentTable rdt = this.GetService(typeof(SVsRunningDocumentTable)) as IVsRunningDocumentTable;
-                if (rdt == null)
-                {
-                    Debug.Assert(false, "Cannot get RDT?");
-                    return VSConstants.E_FAIL;
-                }
+            var siteObject = persistDocData as IObjectWithSite;
+            var site = GetService(typeof(IOleServiceProvider)) as IOleServiceProvider;
+            if (siteObject != null && site != null)
+            {
+                siteObject.SetSite(site);
+            }
+            else
+            {
+                // We need to set the site, and if we cannot, we need to fail
+                Debug.Assert(false, "Cannot set site on VsTextBuffer!");
+                return VSConstants.E_FAIL;
+            }
 
-                string path = f.Url;
-                uint cookie = 0;
+            var rdt = this.GetService(typeof(SVsRunningDocumentTable)) as IVsRunningDocumentTable;
+            if (rdt == null)
+            {
+                Debug.Assert(false, "Cannot get RDT?");
+                return VSConstants.E_FAIL;
+            }
 
-                hr = rdt.RegisterAndLockDocument(
-                    (uint)(_VSRDTFLAGS.RDT_ReadLock | _VSRDTFLAGS.RDT_EditLock),
-                    path,
-                    this,
-                    itemidResource,
-                    docData,
-                    out cookie);
+            string path = f.Url;
+            uint cookie;
 
-                if (!ErrorHandler.Succeeded(hr))
-                {
-                    return hr;
-                }
+            var hr = rdt.RegisterAndLockDocument(
+                (uint)(_VSRDTFLAGS.RDT_ReadLock | _VSRDTFLAGS.RDT_EditLock),
+                path,
+                this,
+                itemidResource,
+                docData,
+                out cookie);
 
-                hr = persistDocData.LoadDocData(path);
+            if (!ErrorHandler.Succeeded(hr))
+            {
+                return hr;
+            }
 
-                if (!ErrorHandler.Succeeded(hr))
-                {
-                    return hr;
-                }
+            hr = persistDocData.LoadDocData(path);
 
-                textLines = buffer;
-            }
-            finally
+            if (!ErrorHandler.Succeeded(hr))
             {
-                /*
-                if (docData != IntPtr.Zero)
-                {
-                    Marshal.Release(docData);
-                }
-                */
+                return hr;
             }
 
+            textLines = buffer;
+
             return hr;
         }
 
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/IDEBuildLogger.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/IDEBuildLogger.cs
index 772a80e1a3d..0643a6c0f3b 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/IDEBuildLogger.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/IDEBuildLogger.cs
@@ -74,7 +74,7 @@ public bool IsLogTaskDone
 		/// enable the logger to retrive the verbosity from
 		/// the correct registry hive.
 		/// </summary>
-		/*internal, but public for FSharp.Project.dll*/ public string BuildVerbosityRegistryRoot
+		public string BuildVerbosityRegistryRoot
 		{
 			get { return buildVerbosityRegistryRoot; }
 			set { buildVerbosityRegistryRoot = value; }
@@ -82,7 +82,7 @@ public bool IsLogTaskDone
 		/// <summary>
 		/// Set to null to avoid writing to the output window
 		/// </summary>
-		/*internal, but public for FSharp.Project.dll*/ public IVsOutputWindowPane OutputWindowPane
+		public IVsOutputWindowPane OutputWindowPane
 		{
 			get { return outputWindowPane; }
 			set { outputWindowPane = value; }
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Interfaces.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Interfaces.cs
index bb31fad5b9f..9ca66031977 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Interfaces.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Interfaces.cs
@@ -3,15 +3,7 @@
 using System;
 using System.Runtime.InteropServices;
 using System.Collections.Generic;
-using System.IO;
-using System.Windows.Forms;
-using System.Diagnostics;
-using System.Globalization;
-using System.Text;
-using System.Threading;
-using Microsoft.VisualStudio.Shell;
 using Microsoft.VisualStudio.Shell.Interop;
-using Microsoft.VisualStudio.OLE.Interop;
 using OleConstants = Microsoft.VisualStudio.OLE.Interop.Constants;
 using VsCommands = Microsoft.VisualStudio.VSConstants.VSStd97CmdID;
 using VsCommands2K = Microsoft.VisualStudio.VSConstants.VSStd2KCmdID;
@@ -24,7 +16,6 @@ namespace Microsoft.VisualStudio.FSharp.ProjectSystem
     /// <summary>
     /// This interface defines the rules for handling build dependency on a project container.
     /// </summary>
-    /// <remarks>Normally this should be an /*internal, but public for FSharp.Project.dll*/ public interface but since it shouldbe available for the aggregator it must be made public.</remarks>
     [ComVisible(true)]
     [CLSCompliant(false)]
     public interface IBuildDependencyOnProjectContainer
@@ -49,7 +40,6 @@ bool BuildNestedProjectsOnBuild
     /// <summary>
     /// Interface for manipulating build dependency
     /// </summary>
-    /// <remarks>Normally this should be an /*internal, but public for FSharp.Project.dll*/ public interface but since it shouldbe available for the aggregator it must be made public.</remarks>
     [ComVisible(true)]
     [CLSCompliant(false)]
     public interface IBuildDependencyUpdate
@@ -57,7 +47,6 @@ public interface IBuildDependencyUpdate
         /// <summary>
         /// Defines a container for storing BuildDependencies
         /// </summary>
-
         IVsBuildDependency[] BuildDependencies
         {
             get;
@@ -80,8 +69,6 @@ IVsBuildDependency[] BuildDependencies
     /// <summary>
     /// Provides access to the reference data container.
     /// </summary>
-    /// <remarks>Normally this should be an /*internal, but public for FSharp.Project.dll*/ public interface but since it should be available for
-    /// the aggregator it must be made public.</remarks>
     [ComVisible(true)]
     public interface IReferenceContainerProvider
     {
@@ -91,8 +78,6 @@ public interface IReferenceContainerProvider
     /// <summary>
     /// Defines a container for manipulating references
     /// </summary>
-    /// <remarks>Normally this should be an /*internal, but public for FSharp.Project.dll*/ public interface but since it should be available for
-    /// the aggregator it must be made public.</remarks>
     [ComVisible(true)]
     public interface IReferenceContainer
     {
@@ -126,7 +111,6 @@ public interface IProjectEvents
     [ComVisible(true)]
     public interface IProjectEventsListener
     {
-
         /// <summary>
         /// Is the object a project events listener.
         /// </summary>
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Microsoft.VisualStudio.Package.Project.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Microsoft.VisualStudio.Package.Project.cs
index 861b5435b2a..34ae4e47c5f 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Microsoft.VisualStudio.Package.Project.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Microsoft.VisualStudio.Package.Project.cs
@@ -50,156 +50,156 @@ protected override string GetLocalizedString(string value)
             return SR.GetString(value, CultureInfo.CurrentUICulture);
         }
     }
-    /*internal, but public for FSharp.Project.dll*/ public sealed class SR
+    public sealed class SR
     {
-        /*internal, but public for FSharp.Project.dll*/ public const string AddToNullProjectError = "AddToNullProjectError";
-        /*internal, but public for FSharp.Project.dll*/ public const string Advanced = "Advanced";
-        /*internal, but public for FSharp.Project.dll*/ public const string AssemblyReferenceAlreadyExists = "AssemblyReferenceAlreadyExists";
-        /*internal, but public for FSharp.Project.dll*/ public const string AttributeLoad = "AttributeLoad";
-        /*internal, but public for FSharp.Project.dll*/ public const string BuildAction = "BuildAction";
-        /*internal, but public for FSharp.Project.dll*/ public const string BuildActionDescription = "BuildActionDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string BuildCaption = "BuildCaption";
-        /*internal, but public for FSharp.Project.dll*/ public const string BuildVerbosity = "BuildVerbosity";
-        /*internal, but public for FSharp.Project.dll*/ public const string BuildVerbosityDescription = "BuildVerbosityDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string BuildEventError = "BuildEventError";
-        /*internal, but public for FSharp.Project.dll*/ public const string CancelQueryEdit = "CancelQueryEdit";
-        /*internal, but public for FSharp.Project.dll*/ public const string CannotAddFileThatIsOpenInEditor = "CannotAddFileThatIsOpenInEditor";
-        /*internal, but public for FSharp.Project.dll*/ public const string CannotAddItemToProjectWithWildcards = "CannotAddItemToProjectWithWildcards";
-        /*internal, but public for FSharp.Project.dll*/ public const string CanNotSaveFileNotOpeneInEditor = "CanNotSaveFileNotOpeneInEditor";
-        /*internal, but public for FSharp.Project.dll*/ public const string CannotStartLibraries = "CannotStartLibraries";
-        /*internal, but public for FSharp.Project.dll*/ public const string cli1 = "cli1";
-        /*internal, but public for FSharp.Project.dll*/ public const string Compile = "Compile";
-        /*internal, but public for FSharp.Project.dll*/ public const string ConfirmExtensionChange = "ConfirmExtensionChange";
-        /*internal, but public for FSharp.Project.dll*/ public const string Content = "Content";
-        /*internal, but public for FSharp.Project.dll*/ public const string CopyAlways = "CopyAlways";
-        /*internal, but public for FSharp.Project.dll*/ public const string CopyIfNewer = "CopyIfNewer";
-        /*internal, but public for FSharp.Project.dll*/ public const string CopyToLocal = "CopyToLocal";
-        /*internal, but public for FSharp.Project.dll*/ public const string CopyToLocalDescription = "CopyToLocalDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string CopyToOutputDirectory = "CopyToOutputDirectory";
-        /*internal, but public for FSharp.Project.dll*/ public const string CopyToOutputDirectoryDescription = "CopyToOutputDirectoryDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string CustomTool = "CustomTool";
-        /*internal, but public for FSharp.Project.dll*/ public const string CustomToolDescription = "CustomToolDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string CustomToolNamespace = "CustomToolNamespace";
-        /*internal, but public for FSharp.Project.dll*/ public const string CustomToolNamespaceDescription = "CustomToolNamespaceDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string DetailsImport = "DetailsImport";
-        /*internal, but public for FSharp.Project.dll*/ public const string DetailsUserImport = "DetailsUserImport";
-        /*internal, but public for FSharp.Project.dll*/ public const string DetailsItem = "DetailsItem";
-        /*internal, but public for FSharp.Project.dll*/ public const string DetailsItemLocation = "DetailsItemLocation";
-        /*internal, but public for FSharp.Project.dll*/ public const string DetailsProperty = "DetailsProperty";
-        /*internal, but public for FSharp.Project.dll*/ public const string DetailsTarget = "DetailsTarget";
-        /*internal, but public for FSharp.Project.dll*/ public const string DetailsUsingTask = "DetailsUsingTask";
-        /*internal, but public for FSharp.Project.dll*/ public const string Detailed = "Detailed";
-        /*internal, but public for FSharp.Project.dll*/ public const string Diagnostic = "Diagnostic";
-        /*internal, but public for FSharp.Project.dll*/ public const string DirectoryExistError = "DirectoryExistError";
-        /*internal, but public for FSharp.Project.dll*/ public const string DoNotCopy = "DoNotCopy";
-        /*internal, but public for FSharp.Project.dll*/ public const string EditorViewError = "EditorViewError";
-        /*internal, but public for FSharp.Project.dll*/ public const string EmbeddedResource = "EmbeddedResource";
-        /*internal, but public for FSharp.Project.dll*/ public const string Error = "Error";
-        /*internal, but public for FSharp.Project.dll*/ public const string ErrorInvalidFileName = "ErrorInvalidFileName";
-        /*internal, but public for FSharp.Project.dll*/ public const string ErrorInvalidProjectName = "ErrorInvalidProjectName";
-        /*internal, but public for FSharp.Project.dll*/ public const string ErrorReferenceCouldNotBeAdded = "ErrorReferenceCouldNotBeAdded";
-        /*internal, but public for FSharp.Project.dll*/ public const string ErrorMsBuildRegistration = "ErrorMsBuildRegistration";
-        /*internal, but public for FSharp.Project.dll*/ public const string ErrorSaving = "ErrorSaving";
-        /*internal, but public for FSharp.Project.dll*/ public const string Exe = "Exe";
-        /*internal, but public for FSharp.Project.dll*/ public const string ExpectedObjectOfType = "ExpectedObjectOfType";
-        /*internal, but public for FSharp.Project.dll*/ public const string FailedToGetService = "FailedToGetService";
-        /*internal, but public for FSharp.Project.dll*/ public const string FailedToRetrieveProperties = "FailedToRetrieveProperties";
-        /*internal, but public for FSharp.Project.dll*/ public const string FileNameCannotContainALeadingPeriod = "FileNameCannotContainALeadingPeriod";
-        /*internal, but public for FSharp.Project.dll*/ public const string FileCannotBeRenamedToAnExistingFile = "FileCannotBeRenamedToAnExistingFile";
-        /*internal, but public for FSharp.Project.dll*/ public const string FileAlreadyExistsAndCannotBeRenamed = "FileAlreadyExistsAndCannotBeRenamed";
-        /*internal, but public for FSharp.Project.dll*/ public const string FileAlreadyExists = "FileAlreadyExists";
-        /*internal, but public for FSharp.Project.dll*/ public const string FileAlreadyExistsCaption = "FileAlreadyExistsCaption";
-        /*internal, but public for FSharp.Project.dll*/ public const string FileAlreadyInProject = "FileAlreadyInProject";
-        /*internal, but public for FSharp.Project.dll*/ public const string FileAlreadyInProjectCaption = "FileAlreadyInProjectCaption";
-        /*internal, but public for FSharp.Project.dll*/ public const string FileCopyError = "FileCopyError";
-        /*internal, but public for FSharp.Project.dll*/ public const string FileName = "FileName";
-        /*internal, but public for FSharp.Project.dll*/ public const string FileNameDescription = "FileNameDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string FileOrFolderAlreadyExists = "FileOrFolderAlreadyExists";
-        /*internal, but public for FSharp.Project.dll*/ public const string FileOrFolderCannotBeFound = "FileOrFolderCannotBeFound";
-        /*internal, but public for FSharp.Project.dll*/ public const string FileProperties = "FileProperties";
-        /*internal, but public for FSharp.Project.dll*/ public const string FolderName = "FolderName";
-        /*internal, but public for FSharp.Project.dll*/ public const string FolderNameDescription = "FolderNameDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string FolderProperties = "FolderProperties";
-        /*internal, but public for FSharp.Project.dll*/ public const string FullPath = "FullPath";
-        /*internal, but public for FSharp.Project.dll*/ public const string FullPathDescription = "FullPathDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string ItemDoesNotExistInProjectDirectory = "ItemDoesNotExistInProjectDirectory";
-        /*internal, but public for FSharp.Project.dll*/ public const string InvalidAutomationObject = "InvalidAutomationObject";
-        /*internal, but public for FSharp.Project.dll*/ public const string InvalidLoggerType = "InvalidLoggerType";
-        /*internal, but public for FSharp.Project.dll*/ public const string InvalidParameter = "InvalidParameter";
-        /*internal, but public for FSharp.Project.dll*/ public const string Library = "Library";
-        /*internal, but public for FSharp.Project.dll*/ public const string LinkedItemsAreNotSupported = "LinkedItemsAreNotSupported";
-        /*internal, but public for FSharp.Project.dll*/ public const string Minimal = "Minimal";
-        /*internal, but public for FSharp.Project.dll*/ public const string Misc = "Misc";
-        /*internal, but public for FSharp.Project.dll*/ public const string None = "None";
-        /*internal, but public for FSharp.Project.dll*/ public const string NoWildcardsInProject = "NoWildcardsInProject";
-        /*internal, but public for FSharp.Project.dll*/ public const string NoZeroImpactProjects = "NoZeroImpactProjects";
-        /*internal, but public for FSharp.Project.dll*/ public const string Normal = "Normal";
-        /*internal, but public for FSharp.Project.dll*/ public const string NestedProjectFailedToReload = "NestedProjectFailedToReload";
-        /*internal, but public for FSharp.Project.dll*/ public const string OutputPath = "OutputPath";
-        /*internal, but public for FSharp.Project.dll*/ public const string OutputPathDescription = "OutputPathDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string PasteFailed = "PasteFailed";
-        /*internal, but public for FSharp.Project.dll*/ public const string ParameterMustBeAValidGuid = "ParameterMustBeAValidGuid";
-        /*internal, but public for FSharp.Project.dll*/ public const string ParameterMustBeAValidItemId = "ParameterMustBeAValidItemId";
-        /*internal, but public for FSharp.Project.dll*/ public const string ParameterCannotBeNullOrEmpty = "ParameterCannotBeNullOrEmpty";
-        /*internal, but public for FSharp.Project.dll*/ public const string PathTooLong = "PathTooLong";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProjectContainsCircularReferences = "ProjectContainsCircularReferences";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProjectReferencesDifferentFramework = "ProjectReferencesDifferentFramework";
-        /*internal, but public for FSharp.Project.dll*/ public const string Program = "Program";
-        /*internal, but public for FSharp.Project.dll*/ public const string Project = "Project";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProjectFile = "ProjectFile";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProjectFileDescription = "ProjectFileDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProjectFolder = "ProjectFolder";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProjectFolderDescription = "ProjectFolderDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProjectProperties = "ProjectProperties";
-        /*internal, but public for FSharp.Project.dll*/ public const string Quiet = "Quiet";
-        /*internal, but public for FSharp.Project.dll*/ public const string QueryReloadNestedProject = "QueryReloadNestedProject";
-        /*internal, but public for FSharp.Project.dll*/ public const string ReferenceCouldNotBeAdded = "ReferenceCouldNotBeAdded";
-        /*internal, but public for FSharp.Project.dll*/ public const string ReferenceAlreadyExists = "ReferenceAlreadyExists";
-        /*internal, but public for FSharp.Project.dll*/ public const string ReferenceWithAssemblyNameAlreadyExists = "ReferenceWithAssemblyNameAlreadyExists";
-        /*internal, but public for FSharp.Project.dll*/ public const string ReferencesNodeName = "ReferencesNodeName";
-        /*internal, but public for FSharp.Project.dll*/ public const string ReferenceProperties = "ReferenceProperties";
-        /*internal, but public for FSharp.Project.dll*/ public const string RefName = "RefName";
-        /*internal, but public for FSharp.Project.dll*/ public const string RefNameDescription = "RefNameDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string RenameFolder = "RenameFolder";
-        /*internal, but public for FSharp.Project.dll*/ public const string RTL = "RTL";
-        /*internal, but public for FSharp.Project.dll*/ public const string SaveCaption = "SaveCaption";
-        /*internal, but public for FSharp.Project.dll*/ public const string SaveModifiedDocuments = "SaveModifiedDocuments";
-        /*internal, but public for FSharp.Project.dll*/ public const string SaveOfProjectFileOutsideCurrentDirectory = "SaveOfProjectFileOutsideCurrentDirectory";
-        /*internal, but public for FSharp.Project.dll*/ public const string SpecificVersion = "SpecificVersion";
-        /*internal, but public for FSharp.Project.dll*/ public const string SpecificVersionDescription = "SpecificVersionDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string StandardEditorViewError = "StandardEditorViewError";
-        /*internal, but public for FSharp.Project.dll*/ public const string URL = "URL";
-        /*internal, but public for FSharp.Project.dll*/ public const string UseOfDeletedItemError = "UseOfDeletedItemError";
-        /*internal, but public for FSharp.Project.dll*/ public const string v1 = "v1";
-        /*internal, but public for FSharp.Project.dll*/ public const string v11 = "v11";
-        /*internal, but public for FSharp.Project.dll*/ public const string v2 = "v2";
-        /*internal, but public for FSharp.Project.dll*/ public const string Warning = "Warning";
-        /*internal, but public for FSharp.Project.dll*/ public const string WinExe = "WinExe";
-        /*internal, but public for FSharp.Project.dll*/ public const string UpgradeCannotOpenProjectFileForEdit = "UpgradeCannotOpenProjectFileForEdit";
-        /*internal, but public for FSharp.Project.dll*/ public const string UpgradeNoNeedToUpgradeAfterCheckout = "UpgradeNoNeedToUpgradeAfterCheckout";        
-        /*internal, but public for FSharp.Project.dll*/ public const string InvalidOutputPath = "InvalidOutputPath";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProjectRefOnlyExeOrDll = "ProjectRefOnlyExeOrDll";
-        /*internal, but public for FSharp.Project.dll*/ public const string CannotBuildWhenBuildInProgress = "CannotBuildWhenBuildInProgress";
-        /*internal, but public for FSharp.Project.dll*/ public const string WorkingDirectoryNotExists = "WorkingDirectoryNotExists";
-        /*internal, but public for FSharp.Project.dll*/ public const string CannotLoadUnknownTargetFrameworkProject = "CannotLoadUnknownTargetFrameworkProject";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProductName = "ProductName";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProjectReferencesHigherVersionWarning = "ProjectReferencesHigherVersionWarning";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProjectConversionNotRequired = "ProjectConversionNotRequired";
-        /*internal, but public for FSharp.Project.dll*/ public const string ConversionNotRequired = "ConversionNotRequired";
-        /*internal, but public for FSharp.Project.dll*/ public const string ErrorMakingProjectBackup = "ErrorMakingProjectBackup";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProjectBackupSuccessful = "ProjectBackupSuccessful";
-        /*internal, but public for FSharp.Project.dll*/ public const string BackupNameConflict = "BackupNameConflict";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProjectContainsLinkedFile = "ProjectContainsLinkedFile";
-        /*internal, but public for FSharp.Project.dll*/ public const string ErrorMakingBackup = "ErrorMakingBackup";
-        /*internal, but public for FSharp.Project.dll*/ public const string BackupSuccessful = "BackupSuccessful";
-        /*internal, but public for FSharp.Project.dll*/ public const string Identity = "Identity";
-        /*internal, but public for FSharp.Project.dll*/ public const string IdentityDescription = "IdentityDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string Path = "Path";
-        /*internal, but public for FSharp.Project.dll*/ public const string PathDescription = "PathDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string Version = "Version";
-        /*internal, but public for FSharp.Project.dll*/ public const string VersionDescription = "VersionDescription";
-        /*internal, but public for FSharp.Project.dll*/ public const string CopyOf = "CopyOf";
-        /*internal, but public for FSharp.Project.dll*/ public const string CopyOf2 = "CopyOf2";
+        public const string AddToNullProjectError = "AddToNullProjectError";
+        public const string Advanced = "Advanced";
+        public const string AssemblyReferenceAlreadyExists = "AssemblyReferenceAlreadyExists";
+        public const string AttributeLoad = "AttributeLoad";
+        public const string BuildAction = "BuildAction";
+        public const string BuildActionDescription = "BuildActionDescription";
+        public const string BuildCaption = "BuildCaption";
+        public const string BuildVerbosity = "BuildVerbosity";
+        public const string BuildVerbosityDescription = "BuildVerbosityDescription";
+        public const string BuildEventError = "BuildEventError";
+        public const string CancelQueryEdit = "CancelQueryEdit";
+        public const string CannotAddFileThatIsOpenInEditor = "CannotAddFileThatIsOpenInEditor";
+        public const string CannotAddItemToProjectWithWildcards = "CannotAddItemToProjectWithWildcards";
+        public const string CanNotSaveFileNotOpeneInEditor = "CanNotSaveFileNotOpeneInEditor";
+        public const string CannotStartLibraries = "CannotStartLibraries";
+        public const string cli1 = "cli1";
+        public const string Compile = "Compile";
+        public const string ConfirmExtensionChange = "ConfirmExtensionChange";
+        public const string Content = "Content";
+        public const string CopyAlways = "CopyAlways";
+        public const string CopyIfNewer = "CopyIfNewer";
+        public const string CopyToLocal = "CopyToLocal";
+        public const string CopyToLocalDescription = "CopyToLocalDescription";
+        public const string CopyToOutputDirectory = "CopyToOutputDirectory";
+        public const string CopyToOutputDirectoryDescription = "CopyToOutputDirectoryDescription";
+        public const string CustomTool = "CustomTool";
+        public const string CustomToolDescription = "CustomToolDescription";
+        public const string CustomToolNamespace = "CustomToolNamespace";
+        public const string CustomToolNamespaceDescription = "CustomToolNamespaceDescription";
+        public const string DetailsImport = "DetailsImport";
+        public const string DetailsUserImport = "DetailsUserImport";
+        public const string DetailsItem = "DetailsItem";
+        public const string DetailsItemLocation = "DetailsItemLocation";
+        public const string DetailsProperty = "DetailsProperty";
+        public const string DetailsTarget = "DetailsTarget";
+        public const string DetailsUsingTask = "DetailsUsingTask";
+        public const string Detailed = "Detailed";
+        public const string Diagnostic = "Diagnostic";
+        public const string DirectoryExistError = "DirectoryExistError";
+        public const string DoNotCopy = "DoNotCopy";
+        public const string EditorViewError = "EditorViewError";
+        public const string EmbeddedResource = "EmbeddedResource";
+        public const string Error = "Error";
+        public const string ErrorInvalidFileName = "ErrorInvalidFileName";
+        public const string ErrorInvalidProjectName = "ErrorInvalidProjectName";
+        public const string ErrorReferenceCouldNotBeAdded = "ErrorReferenceCouldNotBeAdded";
+        public const string ErrorMsBuildRegistration = "ErrorMsBuildRegistration";
+        public const string ErrorSaving = "ErrorSaving";
+        public const string Exe = "Exe";
+        public const string ExpectedObjectOfType = "ExpectedObjectOfType";
+        public const string FailedToGetService = "FailedToGetService";
+        public const string FailedToRetrieveProperties = "FailedToRetrieveProperties";
+        public const string FileNameCannotContainALeadingPeriod = "FileNameCannotContainALeadingPeriod";
+        public const string FileCannotBeRenamedToAnExistingFile = "FileCannotBeRenamedToAnExistingFile";
+        public const string FileAlreadyExistsAndCannotBeRenamed = "FileAlreadyExistsAndCannotBeRenamed";
+        public const string FileAlreadyExists = "FileAlreadyExists";
+        public const string FileAlreadyExistsCaption = "FileAlreadyExistsCaption";
+        public const string FileAlreadyInProject = "FileAlreadyInProject";
+        public const string FileAlreadyInProjectCaption = "FileAlreadyInProjectCaption";
+        public const string FileCopyError = "FileCopyError";
+        public const string FileName = "FileName";
+        public const string FileNameDescription = "FileNameDescription";
+        public const string FileOrFolderAlreadyExists = "FileOrFolderAlreadyExists";
+        public const string FileOrFolderCannotBeFound = "FileOrFolderCannotBeFound";
+        public const string FileProperties = "FileProperties";
+        public const string FolderName = "FolderName";
+        public const string FolderNameDescription = "FolderNameDescription";
+        public const string FolderProperties = "FolderProperties";
+        public const string FullPath = "FullPath";
+        public const string FullPathDescription = "FullPathDescription";
+        public const string ItemDoesNotExistInProjectDirectory = "ItemDoesNotExistInProjectDirectory";
+        public const string InvalidAutomationObject = "InvalidAutomationObject";
+        public const string InvalidLoggerType = "InvalidLoggerType";
+        public const string InvalidParameter = "InvalidParameter";
+        public const string Library = "Library";
+        public const string LinkedItemsAreNotSupported = "LinkedItemsAreNotSupported";
+        public const string Minimal = "Minimal";
+        public const string Misc = "Misc";
+        public const string None = "None";
+        public const string NoWildcardsInProject = "NoWildcardsInProject";
+        public const string NoZeroImpactProjects = "NoZeroImpactProjects";
+        public const string Normal = "Normal";
+        public const string NestedProjectFailedToReload = "NestedProjectFailedToReload";
+        public const string OutputPath = "OutputPath";
+        public const string OutputPathDescription = "OutputPathDescription";
+        public const string PasteFailed = "PasteFailed";
+        public const string ParameterMustBeAValidGuid = "ParameterMustBeAValidGuid";
+        public const string ParameterMustBeAValidItemId = "ParameterMustBeAValidItemId";
+        public const string ParameterCannotBeNullOrEmpty = "ParameterCannotBeNullOrEmpty";
+        public const string PathTooLong = "PathTooLong";
+        public const string ProjectContainsCircularReferences = "ProjectContainsCircularReferences";
+        public const string ProjectReferencesDifferentFramework = "ProjectReferencesDifferentFramework";
+        public const string Program = "Program";
+        public const string Project = "Project";
+        public const string ProjectFile = "ProjectFile";
+        public const string ProjectFileDescription = "ProjectFileDescription";
+        public const string ProjectFolder = "ProjectFolder";
+        public const string ProjectFolderDescription = "ProjectFolderDescription";
+        public const string ProjectProperties = "ProjectProperties";
+        public const string Quiet = "Quiet";
+        public const string QueryReloadNestedProject = "QueryReloadNestedProject";
+        public const string ReferenceCouldNotBeAdded = "ReferenceCouldNotBeAdded";
+        public const string ReferenceAlreadyExists = "ReferenceAlreadyExists";
+        public const string ReferenceWithAssemblyNameAlreadyExists = "ReferenceWithAssemblyNameAlreadyExists";
+        public const string ReferencesNodeName = "ReferencesNodeName";
+        public const string ReferenceProperties = "ReferenceProperties";
+        public const string RefName = "RefName";
+        public const string RefNameDescription = "RefNameDescription";
+        public const string RenameFolder = "RenameFolder";
+        public const string RTL = "RTL";
+        public const string SaveCaption = "SaveCaption";
+        public const string SaveModifiedDocuments = "SaveModifiedDocuments";
+        public const string SaveOfProjectFileOutsideCurrentDirectory = "SaveOfProjectFileOutsideCurrentDirectory";
+        public const string SpecificVersion = "SpecificVersion";
+        public const string SpecificVersionDescription = "SpecificVersionDescription";
+        public const string StandardEditorViewError = "StandardEditorViewError";
+        public const string URL = "URL";
+        public const string UseOfDeletedItemError = "UseOfDeletedItemError";
+        public const string v1 = "v1";
+        public const string v11 = "v11";
+        public const string v2 = "v2";
+        public const string Warning = "Warning";
+        public const string WinExe = "WinExe";
+        public const string UpgradeCannotOpenProjectFileForEdit = "UpgradeCannotOpenProjectFileForEdit";
+        public const string UpgradeNoNeedToUpgradeAfterCheckout = "UpgradeNoNeedToUpgradeAfterCheckout";        
+        public const string InvalidOutputPath = "InvalidOutputPath";
+        public const string ProjectRefOnlyExeOrDll = "ProjectRefOnlyExeOrDll";
+        public const string CannotBuildWhenBuildInProgress = "CannotBuildWhenBuildInProgress";
+        public const string WorkingDirectoryNotExists = "WorkingDirectoryNotExists";
+        public const string CannotLoadUnknownTargetFrameworkProject = "CannotLoadUnknownTargetFrameworkProject";
+        public const string ProductName = "ProductName";
+        public const string ProjectReferencesHigherVersionWarning = "ProjectReferencesHigherVersionWarning";
+        public const string ProjectConversionNotRequired = "ProjectConversionNotRequired";
+        public const string ConversionNotRequired = "ConversionNotRequired";
+        public const string ErrorMakingProjectBackup = "ErrorMakingProjectBackup";
+        public const string ProjectBackupSuccessful = "ProjectBackupSuccessful";
+        public const string BackupNameConflict = "BackupNameConflict";
+        public const string ProjectContainsLinkedFile = "ProjectContainsLinkedFile";
+        public const string ErrorMakingBackup = "ErrorMakingBackup";
+        public const string BackupSuccessful = "BackupSuccessful";
+        public const string Identity = "Identity";
+        public const string IdentityDescription = "IdentityDescription";
+        public const string Path = "Path";
+        public const string PathDescription = "PathDescription";
+        public const string Version = "Version";
+        public const string VersionDescription = "VersionDescription";
+        public const string CopyOf = "CopyOf";
+        public const string CopyOf2 = "CopyOf2";
 
         static SR loader = null;
         ResourceManager resources;
@@ -218,7 +218,7 @@ private static Object InternalSyncObject
             }
         }
 
-        /*internal, but public for FSharp.Project.dll*/ public SR()
+        public SR()
         {
             resources = new System.Resources.ResourceManager("Microsoft.VisualStudio.Package.Project", this.GetType().Assembly);
         }
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Misc/ConnectionPointContainer.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Misc/ConnectionPointContainer.cs
index f8103180496..0cce0acaddb 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Misc/ConnectionPointContainer.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Misc/ConnectionPointContainer.cs
@@ -62,7 +62,7 @@ internal class ConnectionPoint<SinkType> : IConnectionPoint
         private uint nextCookie;
         private ConnectionPointContainer container;
         private IEventSource<SinkType> source;
-        /*internal, but public for FSharp.Project.dll*/ public ConnectionPoint(ConnectionPointContainer container, IEventSource<SinkType> source)
+        public ConnectionPoint(ConnectionPointContainer container, IEventSource<SinkType> source)
         {
             if (null == container)
             {
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Misc/ExternDll.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Misc/ExternDll.cs
index cbe0fddcd67..bb905099e8b 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Misc/ExternDll.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Misc/ExternDll.cs
@@ -6,21 +6,21 @@ internal static class ExternDll {
 #if FEATURE_PAL
 
  #if !PLATFORM_UNIX
-        /*internal, but public for FSharp.Project.dll*/ public const String DLLPREFIX = "";
-        /*internal, but public for FSharp.Project.dll*/ public const String DLLSUFFIX = ".dll";
+        public const String DLLPREFIX = "";
+        public const String DLLSUFFIX = ".dll";
  #else // !PLATFORM_UNIX
   #if __APPLE__
-        /*internal, but public for FSharp.Project.dll*/ public const String DLLPREFIX = "lib";
-        /*internal, but public for FSharp.Project.dll*/ public const String DLLSUFFIX = ".dylib";
+        public const String DLLPREFIX = "lib";
+        public const String DLLSUFFIX = ".dylib";
   #elif _AIX
-        /*internal, but public for FSharp.Project.dll*/ public const String DLLPREFIX = "lib";
-        /*internal, but public for FSharp.Project.dll*/ public const String DLLSUFFIX = ".a";
+        public const String DLLPREFIX = "lib";
+        public const String DLLSUFFIX = ".a";
   #elif __hppa__ || IA64
-        /*internal, but public for FSharp.Project.dll*/ public const String DLLPREFIX = "lib";
-        /*internal, but public for FSharp.Project.dll*/ public const String DLLSUFFIX = ".sl";
+        public const String DLLPREFIX = "lib";
+        public const String DLLSUFFIX = ".sl";
   #else
-        /*internal, but public for FSharp.Project.dll*/ public const String DLLPREFIX = "lib";
-        /*internal, but public for FSharp.Project.dll*/ public const String DLLSUFFIX = ".so";
+        public const String DLLPREFIX = "lib";
+        public const String DLLSUFFIX = ".so";
   #endif
  #endif // !PLATFORM_UNIX
 
@@ -63,12 +63,12 @@ internal static class ExternDll {
         public const string Crypt32  = "crypt32.dll";
 
         // system.data specific
-        /*internal, but public for FSharp.Project.dll*/ public const string Odbc32    = "odbc32.dll";
-        /*internal, but public for FSharp.Project.dll*/ public const string SNI       = "System.Data.dll";
+        public const string Odbc32    = "odbc32.dll";
+        public const string SNI       = "System.Data.dll";
 
         // system.data.oracleclient specific
-        /*internal, but public for FSharp.Project.dll*/ public const string OciDll    = "oci.dll";
-        /*internal, but public for FSharp.Project.dll*/ public const string OraMtsDll = "oramts.dll";
+        public const string OciDll    = "oci.dll";
+        public const string OraMtsDll = "oramts.dll";
 #endif //!FEATURE_PAL
     }
 }
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Misc/UnsafeNativeMethods.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Misc/UnsafeNativeMethods.cs
index 11ff27c8d19..4c2fe256c8c 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Misc/UnsafeNativeMethods.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Misc/UnsafeNativeMethods.cs
@@ -12,58 +12,58 @@ namespace Microsoft.VisualStudio.FSharp.ProjectSystem {
     internal static class UnsafeNativeMethods 
     {
         [DllImport(ExternDll.Kernel32, ExactSpelling = true, CharSet = CharSet.Auto)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern IntPtr GlobalLock(HandleRef handle);
+        public static extern IntPtr GlobalLock(HandleRef handle);
 
         [DllImport(ExternDll.Kernel32, ExactSpelling = true, CharSet = CharSet.Auto)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern bool GlobalUnlock(HandleRef handle);
+        public static extern bool GlobalUnlock(HandleRef handle);
 
         [DllImport(ExternDll.Kernel32, ExactSpelling = true, CharSet = CharSet.Auto)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern int GlobalSize(HandleRef handle);
+        public static extern int GlobalSize(HandleRef handle);
 
         [DllImport(ExternDll.Kernel32, EntryPoint = "GlobalLock", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern IntPtr GlobalLock(IntPtr h);
+        public static extern IntPtr GlobalLock(IntPtr h);
 
         [DllImport(ExternDll.Kernel32, EntryPoint = "GlobalUnlock", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern bool GlobalUnLock(IntPtr h);
+        public static extern bool GlobalUnLock(IntPtr h);
 
         [DllImport(ExternDll.Kernel32, EntryPoint = "GlobalSize", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern int GlobalSize(IntPtr h);
+        public static extern int GlobalSize(IntPtr h);
 
         [DllImport(ExternDll.Ole32, ExactSpelling = true, CharSet = CharSet.Unicode)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern int OleSetClipboard(Microsoft.VisualStudio.OLE.Interop.IDataObject dataObject);
+        public static extern int OleSetClipboard(Microsoft.VisualStudio.OLE.Interop.IDataObject dataObject);
 
         [DllImport(ExternDll.Ole32, ExactSpelling = true, CharSet = CharSet.Unicode)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern int OleGetClipboard(out Microsoft.VisualStudio.OLE.Interop.IDataObject dataObject);
+        public static extern int OleGetClipboard(out Microsoft.VisualStudio.OLE.Interop.IDataObject dataObject);
 
         [DllImport(ExternDll.Ole32, ExactSpelling = true, CharSet = CharSet.Unicode)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern int OleFlushClipboard();
+        public static extern int OleFlushClipboard();
 
         [DllImport(ExternDll.User32, ExactSpelling = true, CharSet = CharSet.Unicode)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern int OpenClipboard(IntPtr newOwner);
+        public static extern int OpenClipboard(IntPtr newOwner);
 
         [DllImport(ExternDll.User32, ExactSpelling = true, CharSet = CharSet.Unicode)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern int EmptyClipboard();
+        public static extern int EmptyClipboard();
 
         [DllImport(ExternDll.User32, ExactSpelling = true, CharSet = CharSet.Unicode)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern int CloseClipboard();
+        public static extern int CloseClipboard();
 
         [DllImport(ExternDll.Comctl32, CharSet = CharSet.Auto)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern int ImageList_GetImageCount(HandleRef himl);
+        public static extern int ImageList_GetImageCount(HandleRef himl);
 
         [DllImport(ExternDll.Comctl32, CharSet = CharSet.Auto)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern bool ImageList_Draw(HandleRef himl, int i, HandleRef hdcDst, int x, int y, int fStyle);
+        public static extern bool ImageList_Draw(HandleRef himl, int i, HandleRef hdcDst, int x, int y, int fStyle);
 
         [DllImport(ExternDll.Shell32, EntryPoint = "DragQueryFileW", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern uint DragQueryFile(IntPtr hDrop, uint iFile, char[] lpszFile, uint cch);
+        public static extern uint DragQueryFile(IntPtr hDrop, uint iFile, char[] lpszFile, uint cch);
 
         [DllImport(ExternDll.User32, EntryPoint = "RegisterClipboardFormatW", SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern ushort RegisterClipboardFormat(string format);
+        public static extern ushort RegisterClipboardFormat(string format);
 
         [DllImport(ExternDll.Shell32, EntryPoint = "SHGetSpecialFolderLocation")]
-        /*internal, but public for FSharp.Project.dll*/ public static extern int SHGetSpecialFolderLocation(IntPtr hwnd, int csidl, [Out, MarshalAs(UnmanagedType.LPArray)] IntPtr[] ppidl);
+        public static extern int SHGetSpecialFolderLocation(IntPtr hwnd, int csidl, [Out, MarshalAs(UnmanagedType.LPArray)] IntPtr[] ppidl);
 
         [DllImport(ExternDll.Shell32, EntryPoint = "SHGetPathFromIDList", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
-        /*internal, but public for FSharp.Project.dll*/ public static extern bool SHGetPathFromIDList(IntPtr pidl, IntPtr pszPath);
+        public static extern bool SHGetPathFromIDList(IntPtr pidl, IntPtr pszPath);
     }
 }
 
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/NestedProjectNode.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/NestedProjectNode.cs
index ae22dea4424..c9140996afc 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/NestedProjectNode.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/NestedProjectNode.cs
@@ -61,7 +61,7 @@ public class NestedProjectNode : HierarchyNode, IPropertyNotifySink
         #endregion
 
         #region properties
-        /*internal, but public for FSharp.Project.dll*/ public IVsHierarchy NestedHierarchy
+        public IVsHierarchy NestedHierarchy
         {
             get
             {
@@ -74,7 +74,7 @@ public class NestedProjectNode : HierarchyNode, IPropertyNotifySink
         /// <summary>
         /// Returns the __VSADDVPFLAGS that will be passed in when calling AddVirtualProjectEx
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ virtual uint VirtualProjectFlags
+        public virtual uint VirtualProjectFlags
         {
             get { return 0; }
         }
@@ -128,7 +128,7 @@ public override int SortPriority
             get { return DefaultSortOrderNode.NestedProjectNode; }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ bool IsDisposed
+        public bool IsDisposed
         {
             get { return this.isDisposed; }
             set { this.isDisposed = value; }
@@ -140,7 +140,7 @@ public override int SortPriority
 
         #region ctor
 
-        public /*protected, but public for FSharp.Project.dll*/ NestedProjectNode()
+        public NestedProjectNode()
         {
         }
 
@@ -417,7 +417,7 @@ public override string GetEditLabel()
         /// <summary>
         /// This is temporary until we have support for re-adding a nested item
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ override bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
+        public override bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
         {
             return false;
         }
@@ -426,7 +426,7 @@ public override string GetEditLabel()
         /// Delegates the call to the inner hierarchy.
         /// </summary>
         /// <param name="reserved">Reserved parameter defined at the IVsPersistHierarchyItem2::ReloadItem parameter.</param>
-        public /*protected, but public for FSharp.Project.dll*/ override void ReloadItem(uint reserved)
+        public override void ReloadItem(uint reserved)
         {
             #region precondition
             if (this.isDisposed || this.ProjectMgr == null || this.ProjectMgr.IsClosed)
@@ -440,7 +440,7 @@ public override string GetEditLabel()
             IVsPersistHierarchyItem2 persistHierachyItem = this.nestedHierarchy as IVsPersistHierarchyItem2;
 
             // We are expecting that if we get called then the nestedhierarchy supports IVsPersistHierarchyItem2, since then hierrachy should support handling its own reload.
-            // There should be no errormessage to the user since this is an /*internal, but public for FSharp.Project.dll*/ public error, that it cannot be fixed at user level.
+            // There should be no errormessage to the user since this is an public error, that it cannot be fixed at user level.
             if (persistHierachyItem == null)
             {
                 throw new InvalidOperationException();
@@ -453,7 +453,7 @@ public override string GetEditLabel()
         /// Flag indicating that changes to a file can be ignored when item is saved or reloaded. 
         /// </summary>
         /// <param name="ignoreFlag">Flag indicating whether or not to ignore changes (1 to ignore, 0 to stop ignoring).</param>
-        public /*protected, but public for FSharp.Project.dll*/ override void IgnoreItemFileChanges(bool ignoreFlag)
+        public override void IgnoreItemFileChanges(bool ignoreFlag)
         {
             #region precondition
             if (this.isDisposed || this.ProjectMgr == null || this.ProjectMgr.IsClosed)
@@ -482,7 +482,7 @@ public override string GetEditLabel()
         /// </summary>
         /// <param name="files">The files to which an array of VSADDFILEFLAGS has to be specified.</param>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ override VSADDFILEFLAGS[] GetAddFileFlags(string[] files)
+        public override VSADDFILEFLAGS[] GetAddFileFlags(string[] files)
         {
             if (files == null || files.Length == 0)
             {
@@ -504,7 +504,7 @@ public override string GetEditLabel()
         /// </summary>
         /// <param name="files">The files to which an array of VSADDFILEFLAGS has to be specified.</param>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ override VSQUERYADDFILEFLAGS[] GetQueryAddFileFlags(string[] files)
+        public override VSQUERYADDFILEFLAGS[] GetQueryAddFileFlags(string[] files)
         {
             if (files == null || files.Length == 0)
             {
@@ -526,7 +526,7 @@ public override string GetEditLabel()
         /// </summary>
         /// <param name="files">The files to which an array of VSREMOVEFILEFLAGS has to be specified.</param>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ override VSREMOVEFILEFLAGS[] GetRemoveFileFlags(string[] files)
+        public override VSREMOVEFILEFLAGS[] GetRemoveFileFlags(string[] files)
         {
             if (files == null || files.Length == 0)
             {
@@ -548,7 +548,7 @@ public override string GetEditLabel()
         /// </summary>
         /// <param name="files">The files to which an array of VSQUERYREMOVEFILEFLAGS has to be specified.</param>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ override VSQUERYREMOVEFILEFLAGS[] GetQueryRemoveFileFlags(string[] files)
+        public override VSQUERYREMOVEFILEFLAGS[] GetQueryRemoveFileFlags(string[] files)
         {
             if (files == null || files.Length == 0)
             {
@@ -655,7 +655,7 @@ public virtual void Init(string fileNameParam, string destinationParam, string p
         /// <summary>
         /// Links a nested project as a virtual project to the solution.
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual void AddVirtualProject()
+        public virtual void AddVirtualProject()
         {
             // This is the second step in creating and adding a nested project. The inner hierarchy must have been
             // already initialized at this point. 
@@ -716,7 +716,7 @@ protected override void Dispose(bool disposing)
         /// Creates the project directory if it does not exist.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void CreateProjectDirectory()
+        public virtual void CreateProjectDirectory()
         {
             string directoryName = Path.GetDirectoryName(this.projectPath);
 
@@ -733,7 +733,7 @@ protected override void Dispose(bool disposing)
         /// nested project node.
         /// </summary>
         [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "RDT")]
-        public /*protected, but public for FSharp.Project.dll*/ virtual void LockRDTEntry()
+        public virtual void LockRDTEntry()
         {
             // Define flags for the nested project document
             _VSRDTFLAGS flags = _VSRDTFLAGS.RDT_VirtualDocument | _VSRDTFLAGS.RDT_ProjSlnDocument; ;
@@ -799,7 +799,7 @@ protected override void Dispose(bool disposing)
         /// Unlock the RDT entry for the nested project
         /// </summary>
         [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "RDT")]
-        public /*protected, but public for FSharp.Project.dll*/ virtual void UnlockRDTEntry()
+        public virtual void UnlockRDTEntry()
         {
             if (this.isDisposed || this.ProjectMgr == null || this.ProjectMgr.IsClosed)
             {
@@ -821,7 +821,7 @@ protected override void Dispose(bool disposing)
         /// Renames the project file in the parent project structure.
         /// </summary>
         /// <param name="label">The new label.</param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void RenameNestedProjectInParentProject(string label)
+        public virtual void RenameNestedProjectInParentProject(string label)
         {
             string existingLabel = this.Caption;
 
@@ -871,7 +871,7 @@ protected override void Dispose(bool disposing)
         /// Saves the nested project information in the project file.
         /// </summary>
         /// <param name="newFileName"></param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void SaveNestedProjectItemInProjectFile(string newFileName)
+        public virtual void SaveNestedProjectItemInProjectFile(string newFileName)
         {
             string existingInclude = MSBuildItem.GetEvaluatedInclude(this.ItemNode.Item);
             string existingRelativePath = Path.GetDirectoryName(existingInclude);
@@ -884,7 +884,7 @@ protected override void Dispose(bool disposing)
         /// <summary>
         /// Closes a nested project and releases the nested hierrachy pointer.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public void CloseNestedProjectNode()
+        public void CloseNestedProjectNode()
         {
             if (this.isDisposed || this.ProjectMgr == null || this.ProjectMgr.IsClosed)
             {
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/NodeProperties.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/NodeProperties.cs
index 35b0713435f..0c8ac24ea63 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/NodeProperties.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/NodeProperties.cs
@@ -289,13 +289,13 @@ public override string GetComponentName()
         #endregion
 
         #region helper methods
-        public /*protected, but public for FSharp.Project.dll*/ string GetProperty(string name, string def)
+        public string GetProperty(string name, string def)
         {
             string a = this.Node.ItemNode.GetMetadata(name);
             return (a == null) ? def : a;
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ void SetProperty(string name, string value)
+        public void SetProperty(string name, string value)
         {
             this.Node.ItemNode.SetMetadata(name, value);
         }
@@ -783,18 +783,18 @@ public class SingleFileGeneratorNodeProperties : FileNodeProperties
     #region fields
         private EventHandler<HierarchyNodeEventArgs> onCustomToolChanged;
         private EventHandler<HierarchyNodeEventArgs> onCustomToolNameSpaceChanged;
-        public /*protected, but public for FSharp.Project.dll*/ string _customTool = "";
-        public /*protected, but public for FSharp.Project.dll*/ string _customToolNamespace = "";
+        public string _customTool = "";
+        public string _customToolNamespace = "";
         #endregion
 
     #region custom tool events
-        /*internal, but public for FSharp.Project.dll*/ public event EventHandler<HierarchyNodeEventArgs> OnCustomToolChanged
+        public event EventHandler<HierarchyNodeEventArgs> OnCustomToolChanged
         {
             add { onCustomToolChanged += value; }
             remove { onCustomToolChanged -= value; }
         }
 
-        /*internal, but public for FSharp.Project.dll*/ public event EventHandler<HierarchyNodeEventArgs> OnCustomToolNameSpaceChanged
+        public event EventHandler<HierarchyNodeEventArgs> OnCustomToolNameSpaceChanged
         {
             add { onCustomToolNameSpaceChanged += value; }
             remove { onCustomToolNameSpaceChanged -= value; }
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/OleServiceProvider.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/OleServiceProvider.cs
index 402d540c72f..a304fcea94b 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/OleServiceProvider.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/OleServiceProvider.cs
@@ -227,7 +227,7 @@ public void RemoveService(Type serviceType)
         /// The method that does the cleanup.
         /// </summary>
         /// <param name="disposing"></param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void Dispose(bool disposing)
+        public virtual void Dispose(bool disposing)
         {
             // Everybody can go here.
             if (!this.isDisposed)
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/OutputGroup.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/OutputGroup.cs
index e23b316369a..1cf0dc9781f 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/OutputGroup.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/OutputGroup.cs
@@ -37,7 +37,7 @@ public class OutputGroup : IVsOutputGroup2
         /// Get the project configuration object associated with this output group
         /// </summary>
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Cfg")]
-        public /*protected, but public for FSharp.Project.dll*/ ProjectConfig ProjectCfg
+        public ProjectConfig ProjectCfg
         {
             get { return projectCfg; }
         }
@@ -45,7 +45,7 @@ public class OutputGroup : IVsOutputGroup2
         /// <summary>
         /// Get the project object that produces this output group.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ ProjectNode Project
+        public ProjectNode Project
         {
             get { return project; }
         }
@@ -54,7 +54,7 @@ public class OutputGroup : IVsOutputGroup2
         /// Gets the msbuild target name which is assciated to the outputgroup.
         /// ProjectNode defines a static collection of output group names and their associated MsBuild target
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ string TargetName
+        public string TargetName
         {
             get { return targetName; }
         }
@@ -114,7 +114,7 @@ internal OutputGroup(string outputName, string msBuildTargetName, ProjectNode pr
         #endregion
 
         #region virtual methods
-        public /*protected, but public for FSharp.Project.dll*/ virtual void Refresh()
+        public virtual void Refresh()
         {
             // Let MSBuild know which configuration we are working with
             project.SetConfiguration(projectCfg.ConfigCanonicalName);
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectConfig.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectConfig.cs
index f49c9dee7c7..9e23e5913e8 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectConfig.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectConfig.cs
@@ -122,7 +122,6 @@ public override bool Equals(object obj)
         /// <param name="configName">The name of the configuration.</param>
         /// <param name="platformName">The name of the platform.</param>
         /// <returns>true if successfull.</returns>
-        /*internal, but public for FSharp.Project.dll*/
         internal static bool TrySplitConfigurationCanonicalName(string canonicalName, out string configName, out string platformName)
         {
             // TODO rationalize this code with callers and ProjectNode.OnHandleConfigurationRelatedGlobalProperties, ProjectNode.TellMSBuildCurrentSolutionConfiguration, etc
@@ -184,10 +183,10 @@ public class ProjectConfig :
         IVsCfgBrowseObject
     {
         #region constants
-        /*internal, but public for FSharp.Project.dll*/ public const string Debug = "Debug";
-        /*internal, but public for FSharp.Project.dll*/ public const string Release = "Release";
-        /*internal, but public for FSharp.Project.dll*/ public const string AnyCPU = "AnyCPU";
-        /*internal, but public for FSharp.Project.dll*/ public const string AnyCPU32BitPreferred = "AnyCPU32BitPreferred";
+        public const string Debug = "Debug";
+        public const string Release = "Release";
+        public const string AnyCPU = "AnyCPU";
+        public const string AnyCPU32BitPreferred = "AnyCPU32BitPreferred";
         public const string Any_CPU = "Any CPU";
 
         #endregion
@@ -614,7 +613,7 @@ public virtual object ConfigurationProperties
             }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ IList<OutputGroup> OutputGroups
+        public IList<OutputGroup> OutputGroups
         {
             get
             {
@@ -665,7 +664,7 @@ internal ProjectConfig(ProjectNode project, ConfigCanonicalName configName)
         #endregion
 
         #region methods
-        public /*protected, but public for FSharp.Project.dll*/ virtual OutputGroup CreateOutputGroup(ProjectNode project, KeyValuePair<string, string> group)
+        public virtual OutputGroup CreateOutputGroup(ProjectNode project, KeyValuePair<string, string> group)
         {
             OutputGroup outputGroup = new OutputGroup(group.Key, group.Value, project, this);
             return outputGroup;
@@ -787,7 +786,7 @@ private void SetPropertyUnderConditionImpl(string propertyName, string propertyV
         /// </summary>
         /// <param name="storageType">Project file or user file</param>
         /// <returns>0 = not dirty</returns>
-        /*internal, but public for FSharp.Project.dll*/ public int IsFlavorDirty(_PersistStorageType storageType)
+        public int IsFlavorDirty(_PersistStorageType storageType)
         {
             int isDirty = 0;
             if (this.flavoredCfg != null && this.flavoredCfg is IPersistXMLFragment)
@@ -804,7 +803,7 @@ private void SetPropertyUnderConditionImpl(string propertyName, string propertyV
         /// <param name="storageType">Project file or user file</param>
         /// <param name="fragment">Fragment that the flavor wants to save</param>
         /// <returns>HRESULT</returns>
-        /*internal, but public for FSharp.Project.dll*/ public int GetXmlFragment(Guid flavor, _PersistStorageType storageType, out string fragment)
+        public int GetXmlFragment(Guid flavor, _PersistStorageType storageType, out string fragment)
         {
             fragment = null;
             int hr = VSConstants.S_OK;
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectContainerNode.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectContainerNode.cs
index ae0b7a47a11..5bebe67afcb 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectContainerNode.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectContainerNode.cs
@@ -59,7 +59,7 @@ internal ProjectContainerNode()
         /// <summary>
         /// Returns teh object that handles listening to file changes on the nested project files.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public FileChangeManager NestedProjectNodeReloader
+        public FileChangeManager NestedProjectNodeReloader
         {
             get
             {
@@ -78,7 +78,7 @@ internal ProjectContainerNode()
         /// <summary>
         /// This is the object that will be returned by EnvDTE.Project.Object for this project
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public override object Object
+        public override object Object
         {
             get { return new Automation.OASolutionFolder<ProjectContainerNode>(this); }
         }
@@ -166,7 +166,7 @@ public override int SaveItem(VSSAVEFLAGS dwSave, string silentSaveAsName, uint i
             }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override bool FilterItemTypeToBeAddedToHierarchy(string itemType)
+        public override bool FilterItemTypeToBeAddedToHierarchy(string itemType)
         {
             if (String.Compare(itemType, ProjectFileConstants.SubProject, StringComparison.OrdinalIgnoreCase) == 0)
             {
@@ -215,7 +215,7 @@ public override int ReloadItem(uint itemId, uint reserved)
         /// <summary>
         /// Reloads a project and its nested project nodes.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ override void Reload()
+        public override void Reload()
         {
             base.Reload();
             this.CreateNestedProjectNodes();
@@ -352,7 +352,7 @@ public virtual IVsHierarchy[] EnumNestedHierachiesForBuildDependency()
 
         #region helper methods
 
-        /*internal, but public for FSharp.Project.dll*/ protected void RemoveNestedProjectNodes()
+        protected void RemoveNestedProjectNodes()
         {
             for (HierarchyNode n = this.FirstChild; n != null; n = n.NextSibling)
             {
@@ -373,7 +373,7 @@ public virtual IVsHierarchy[] EnumNestedHierachiesForBuildDependency()
         /// and for each SubProject it finds, it create the project and a node
         /// in our Hierarchy to hold the project.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ protected void CreateNestedProjectNodes()
+        protected void CreateNestedProjectNodes()
         {
             // 1. Create a ProjectElement with the found item and then Instantiate a new Nested project with this ProjectElement.
             // 2. Link into the hierarchy.            
@@ -423,7 +423,7 @@ public virtual IVsHierarchy[] EnumNestedHierachiesForBuildDependency()
         /// This is used while loading the project and can also be used
         /// to add an existing project to our hierarchy.
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual NestedProjectNode AddExistingNestedProject(ProjectElement element, __VSCREATEPROJFLAGS creationFlags)
+        public virtual NestedProjectNode AddExistingNestedProject(ProjectElement element, __VSCREATEPROJFLAGS creationFlags)
         {
             ProjectElement elementToUse = (element == null) ? this.nestedProjectElement : element;
 
@@ -450,7 +450,7 @@ public virtual IVsHierarchy[] EnumNestedHierachiesForBuildDependency()
         /// <param name="element">The project item to use as the base of the nested project.</param>
         /// <param name="silent">true if the wizard should run silently, otherwise false.</param>
         [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Vs")]
-        public /*protected internal, but public for FSharp.Project.dll*/ void RunVsTemplateWizard(ProjectElement element, bool silent)
+        public void RunVsTemplateWizard(ProjectElement element, bool silent)
         {
             ProjectElement elementToUse = (element == null) ? this.nestedProjectElement : element;
 
@@ -512,7 +512,7 @@ public virtual IVsHierarchy[] EnumNestedHierachiesForBuildDependency()
         /// If you want to create a project for which there exist a
         /// vstemplate, consider using RunVsTemplateWizard instead.
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual NestedProjectNode AddNestedProjectFromTemplate(ProjectElement element, __VSCREATEPROJFLAGS creationFlags)
+        public virtual NestedProjectNode AddNestedProjectFromTemplate(ProjectElement element, __VSCREATEPROJFLAGS creationFlags)
         {
             ProjectElement elementToUse = (element == null) ? this.nestedProjectElement : element;
 
@@ -533,7 +533,7 @@ public virtual IVsHierarchy[] EnumNestedHierachiesForBuildDependency()
         /// If you want to create a project for which there exist a
         /// vstemplate, consider using RunVsTemplateWizard instead.
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual NestedProjectNode AddNestedProjectFromTemplate(string fileName, string destination, string projectName, ProjectElement element, __VSCREATEPROJFLAGS creationFlags)
+        public virtual NestedProjectNode AddNestedProjectFromTemplate(string fileName, string destination, string projectName, ProjectElement element, __VSCREATEPROJFLAGS creationFlags)
         {
             // If this is project creation and the template specified a subproject in its project file, this.nestedProjectElement will be used 
             ProjectElement elementToUse = (element == null) ? this.nestedProjectElement : element;
@@ -574,7 +574,7 @@ public virtual IVsHierarchy[] EnumNestedHierachiesForBuildDependency()
         /// Override this method if you want to provide your own type of nodes.
         /// This would be the case if you derive a class from NestedProjectNode
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ virtual NestedProjectNode CreateNestedProjectNode(ProjectElement element)
+        public virtual NestedProjectNode CreateNestedProjectNode(ProjectElement element)
         {
             return new NestedProjectNode(this, element);
         }
@@ -582,7 +582,7 @@ public virtual IVsHierarchy[] EnumNestedHierachiesForBuildDependency()
         /// <summary>
         /// Links the nested project nodes to the solution. The default implementation parses all nested project nodes and calles AddVirtualProjectEx on them.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void AddVirtualProjects()
+        public virtual void AddVirtualProjects()
         {
             for (HierarchyNode child = this.FirstChild; child != null; child = child.NextSibling)
             {
@@ -602,7 +602,7 @@ public virtual IVsHierarchy[] EnumNestedHierachiesForBuildDependency()
         /// Template can be a full path, a project template (for projects
         /// that support VsTemplates) or a relative path (for other projects).
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ virtual string GetProjectTemplatePath(ProjectElement element)
+        public virtual string GetProjectTemplatePath(ProjectElement element)
         {
             ProjectElement elementToUse = (element == null) ? this.nestedProjectElement : element;
 
@@ -670,7 +670,7 @@ private RegisteredProjectType GetRegisteredProject(ProjectElement element)
         /// Reloads a nested project node by deleting it and readding it.
         /// </summary>
         /// <param name="node">The node to reload.</param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void ReloadNestedProjectNode(NestedProjectNode node)
+        public virtual void ReloadNestedProjectNode(NestedProjectNode node)
         {
             if (node == null)
             {
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectElement.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectElement.cs
index c8e65e8ee9f..e3002c09f0b 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectElement.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectElement.cs
@@ -42,10 +42,10 @@ public static string GetEvaluatedInclude(Microsoft.Build.Execution.ProjectItemIn
     /// <summary>
     /// This class represent a project item (usualy a file) and allow getting and
     /// setting attribute on it.
-    /// This class allow us to keep the /*internal, but public for FSharp.Project.dll*/ public details of our items hidden from
+    /// This class allow us to keep the public details of our items hidden from
     /// our derived classes.
     /// While the class itself is public so it can be manipulated by derived classes,
-    /// its /*internal, but public for FSharp.Project.dll*/ public constructors make sure it can only be created from within the assembly.
+    /// its public constructors make sure it can only be created from within the assembly.
     /// </summary>
     internal sealed class ProjectElement
     {
@@ -87,7 +87,7 @@ public string ItemName
             }
         }
 
-        /*internal, but public for FSharp.Project.dll*/ public Microsoft.Build.Evaluation.ProjectItem Item
+        public Microsoft.Build.Evaluation.ProjectItem Item
         {
             get
             {
@@ -95,7 +95,7 @@ public string ItemName
             }
         }
 
-        /*internal, but public for FSharp.Project.dll*/ public bool IsVirtual
+        public bool IsVirtual
         {
             get
             {
@@ -107,10 +107,10 @@ public string ItemName
         #region ctors
         /// <summary>
         /// Constructor to create a new MSBuild.BuildItem and add it to the project
-        /// Only have /*internal, but public for FSharp.Project.dll*/ public constructors as the only one who should be creating
+        /// Only have public constructors as the only one who should be creating
         /// such object is the project itself (see Project.CreateFileNode()).
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public ProjectElement(ProjectNode project, string itemPath, string itemType)
+        public ProjectElement(ProjectNode project, string itemPath, string itemType)
         {
             if (project == null)
             {
@@ -174,13 +174,13 @@ private void CheckAndTryToFixWildcards(string itemType, string itemPath)
 
         /// <summary>
         /// Constructor to Wrap an existing MSBuild.BuildItem
-        /// Only have /*internal, but public for FSharp.Project.dll*/ public constructors as the only one who should be creating
+        /// Only have public constructors as the only one who should be creating
         /// such object is the project itself (see Project.CreateFileNode()).
         /// </summary>
         /// <param name="project">Project that owns this item</param>
         /// <param name="existingItem">an MSBuild.BuildItem; can be null if virtualFolder is true</param>
         /// <param name="virtualFolder">Is this item virtual (such as reference folder)</param>
-        /*internal, but public for FSharp.Project.dll*/ public ProjectElement(ProjectNode project, Microsoft.Build.Evaluation.ProjectItem existingItem, bool virtualFolder)
+        public ProjectElement(ProjectNode project, Microsoft.Build.Evaluation.ProjectItem existingItem, bool virtualFolder)
         {
             if (project == null)
                 throw new ArgumentNullException("project");
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectFactory.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectFactory.cs
index eeab5c48616..bf0bbbb7a86 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectFactory.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectFactory.cs
@@ -33,7 +33,7 @@ internal abstract class ProjectFactory : Microsoft.VisualStudio.Shell.Flavor.Fla
         #endregion
 
         #region properties
-        public /*protected, but public for FSharp.Project.dll*/ Microsoft.VisualStudio.Shell.Package Package
+        public Microsoft.VisualStudio.Shell.Package Package
         {
             get
             {
@@ -41,7 +41,7 @@ internal abstract class ProjectFactory : Microsoft.VisualStudio.Shell.Flavor.Fla
             }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ System.IServiceProvider Site
+        public System.IServiceProvider Site
         {
             get
             {
@@ -52,7 +52,7 @@ internal abstract class ProjectFactory : Microsoft.VisualStudio.Shell.Flavor.Fla
         /// <summary>
         /// The msbuild engine that we are going to use.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ Microsoft.Build.Evaluation.ProjectCollection BuildEngine
+        public Microsoft.Build.Evaluation.ProjectCollection BuildEngine
         {
             get
             {
@@ -63,7 +63,7 @@ internal abstract class ProjectFactory : Microsoft.VisualStudio.Shell.Flavor.Fla
         /// <summary>
         /// The msbuild project for the temporary project file.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ Microsoft.Build.Evaluation.Project BuildProject
+        public Microsoft.Build.Evaluation.Project BuildProject
         {
             get
             {
@@ -77,7 +77,7 @@ internal abstract class ProjectFactory : Microsoft.VisualStudio.Shell.Flavor.Fla
         #endregion
 
         #region ctor
-        public /*protected, but public for FSharp.Project.dll*/ ProjectFactory(Microsoft.VisualStudio.Shell.Package package)
+        public ProjectFactory(Microsoft.VisualStudio.Shell.Package package)
         {
             this.package = package;
             this.site = package;
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectFileConstants.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectFileConstants.cs
index 0774f55d11d..c4ae9f10c6b 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectFileConstants.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectFileConstants.cs
@@ -169,9 +169,9 @@ internal static class ProjectSystemConstants
         public const string CanUseTargetFSharpCoreVersion = "CanUseTargetFSharpCoreVersion";
     }
 
-    /*internal, but public for FSharp.Project.dll*/ public static class ProjectFileValues
+    public static class ProjectFileValues
     {
-        /*internal, but public for FSharp.Project.dll*/ public const string AnyCPU = "AnyCPU";
+        public const string AnyCPU = "AnyCPU";
     }
 
     internal enum WrapperToolAttributeValue
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectNode.CopyPaste.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectNode.CopyPaste.cs
index 2a02b48acf8..cd2bba7614c 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectNode.CopyPaste.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectNode.CopyPaste.cs
@@ -357,7 +357,7 @@ public virtual int OnClear(int wasCut)
         /// </summary>
         /// <param name="itemId">The id of the node.</param>
         /// <returns>true if the node acceots drag operation.</returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual bool CanTargetNodeAcceptDrop(uint itemId)
+        public virtual bool CanTargetNodeAcceptDrop(uint itemId)
         {
             HierarchyNode targetNode = NodeFromItemId(itemId);
             if (targetNode is ReferenceContainerNode || targetNode is ReferenceNode)
@@ -527,7 +527,7 @@ private void AddFolderFromOtherProject(string folderToAdd, HierarchyNode targetN
         /// <param name="itemId">Item ID where to start walking the hierarchy</param>
         /// <param name="targetNode">Node to start adding to</param>
         /// <param name="addSiblings">Typically false on first call and true after that</param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void WalkSourceProjectAndAdd(IVsHierarchy sourceHierarchy, uint itemId, HierarchyNode targetNode, bool addSiblings)
+        public virtual void WalkSourceProjectAndAdd(IVsHierarchy sourceHierarchy, uint itemId, HierarchyNode targetNode, bool addSiblings)
         {
             // Before we start the walk, add the current node
             object variant = null;
@@ -580,7 +580,7 @@ private void AddFolderFromOtherProject(string folderToAdd, HierarchyNode targetN
         /// <param name="name">Name of the item being added</param>
         /// <param name="targetPath">Path of the item being added</param>
         /// <returns>Node that was added</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual HierarchyNode AddNodeIfTargetExistInStorage(HierarchyNode parentNode, string name, string targetPath)
+        public virtual HierarchyNode AddNodeIfTargetExistInStorage(HierarchyNode parentNode, string name, string targetPath)
         {
             HierarchyNode newNode = parentNode;
             // If the file/directory exist, add a node for it
@@ -606,7 +606,7 @@ private void AddFolderFromOtherProject(string folderToAdd, HierarchyNode targetN
         /// <summary>
         /// Handle the Cut operation to the clipboard
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ override int CutToClipboard()
+        public override int CutToClipboard()
         {
             int returnValue = (int)OleConstants.OLECMDERR_E_NOTSUPPORTED;
             try
@@ -644,7 +644,7 @@ private void AddFolderFromOtherProject(string folderToAdd, HierarchyNode targetN
         /// <summary>
         /// Handle the Copy operation to the clipboard
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ override int CopyToClipboard()
+        public override int CopyToClipboard()
         {
             int returnValue = (int)OleConstants.OLECMDERR_E_NOTSUPPORTED;
             try
@@ -686,7 +686,7 @@ private void AddFolderFromOtherProject(string folderToAdd, HierarchyNode targetN
         /// <summary>
         /// Handle the Paste operation to a targetNode
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ override int PasteFromClipboard(HierarchyNode targetNode)
+        public override int PasteFromClipboard(HierarchyNode targetNode)
         {
             int returnValue = (int)OleConstants.OLECMDERR_E_NOTSUPPORTED;
 
@@ -745,7 +745,7 @@ private void AddFolderFromOtherProject(string folderToAdd, HierarchyNode targetN
         /// Determines if the paste command should be allowed.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ override bool AllowPasteCommand()
+        public override bool AllowPasteCommand()
         {
             IOleDataObject dataObject = null;
             try
@@ -780,7 +780,7 @@ private void AddFolderFromOtherProject(string folderToAdd, HierarchyNode targetN
         /// Register/Unregister for Clipboard events for the UiHierarchyWindow (solution explorer)
         /// </summary>
         /// <param name="register">true for register, false for unregister</param>
-        public /*protected, but public for FSharp.Project.dll*/ override void RegisterClipboardNotifications(bool register)
+        public override void RegisterClipboardNotifications(bool register)
         {
             // Get the UiHierarchy window clipboard helper service
             IVsUIHierWinClipboardHelper clipboardHelper = (IVsUIHierWinClipboardHelper)GetService(typeof(SVsUIHierWinClipboardHelper));
@@ -942,7 +942,7 @@ internal DropEffect QueryDropEffect(DropDataType dropDataType, uint grfKeyState)
             }
         }
 
-        /*internal, but public for FSharp.Project.dll*/ public void CleanupSelectionDataObject(bool dropped, bool cut, bool moved)
+        public void CleanupSelectionDataObject(bool dropped, bool cut, bool moved)
         {
             this.CleanupSelectionDataObject(dropped, cut, moved, false);
         }
@@ -952,7 +952,7 @@ internal DropEffect QueryDropEffect(DropDataType dropDataType, uint grfKeyState)
         ///  to determine whether we need to clean up the source nodes or not. If
         ///  justCleanup is set, it only does the cleanup work.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public void CleanupSelectionDataObject(bool dropped, bool cut, bool moved, bool justCleanup)
+        public void CleanupSelectionDataObject(bool dropped, bool cut, bool moved, bool justCleanup)
         {
             if (this.ItemsDraggedOrCutOrCopied == null || this.ItemsDraggedOrCutOrCopied.Count == 0)
             {
@@ -1057,7 +1057,6 @@ private bool AddFilesFromProjectReferences(HierarchyNode targetNode, string[] pr
         /// </summary>
         /// <param name="projectRef"></param>
         /// <param name="targetNode"></param>
-        /*internal, but public for FSharp.Project.dll*/
         private bool AddFileToNodeFromProjectReference(string projectRef, HierarchyNode targetNode)
         {
             if (String.IsNullOrEmpty(projectRef))
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectNode.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectNode.cs
index ea2e4d01e52..6e0c1a609a4 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectNode.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectNode.cs
@@ -508,7 +508,7 @@ public enum ImageName
         /// Flags for specifying which events to stop triggering.
         /// </summary>
         [Flags]
-        /*internal, but public for FSharp.Project.dll*/ public enum EventTriggering
+        public enum EventTriggering
         {
             TriggerAll = 0,
             DoNotTriggerHierarchyEvents = 1,
@@ -521,7 +521,7 @@ public enum ImageName
         /// <summary>
         /// The user file extension.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public const string PerUserFileExtension = ".user";
+        public const string PerUserFileExtension = ".user";
         #endregion
 
         #region fields
@@ -685,7 +685,7 @@ public enum ImageName
         private Dictionary<Type, Guid> catidMapping = new Dictionary<Type, Guid>();
 
 		/// <summary>
-		/// The /*internal, but public for FSharp.Project.dll*/ public package implementation.
+		/// The public package implementation.
 		/// </summary>
 		private ProjectPackage package;
 
@@ -882,7 +882,7 @@ public virtual string WarningString
         /// </summary>
         [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "ReEvaluate")]
         [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Re")]
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual string ReEvaluateProjectFileTargetName
+        public virtual string ReEvaluateProjectFileTargetName
         {
             get
             {
@@ -893,7 +893,7 @@ public virtual string WarningString
         /// <summary>
         /// This is the object that will be returned by EnvDTE.Project.Object for this project
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual object ProjectObject
+        public virtual object ProjectObject
         {
             get
             {
@@ -904,7 +904,7 @@ public virtual string WarningString
         /// <summary>
         /// Override this property to specify when the project file is dirty.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ virtual bool IsProjectFileDirty
+        public virtual bool IsProjectFileDirty
         {
             get
             {
@@ -922,7 +922,7 @@ public virtual string WarningString
         /// <summary>
         /// True if the project uses the Project Designer Editor instead of the property page frame to edit project properties.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ virtual bool SupportsProjectDesigner
+        public virtual bool SupportsProjectDesigner
         {
             get
             {
@@ -935,7 +935,7 @@ public virtual string WarningString
 
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ virtual Guid ProjectDesignerEditor
+        public virtual Guid ProjectDesignerEditor
         {
             get
             {
@@ -946,7 +946,7 @@ public virtual string WarningString
         /// <summary>
         /// Defines the flag that supports the VSHPROPID.ShowProjInSolutionPage
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ virtual bool ShowProjectInSolutionPage
+        public virtual bool ShowProjectInSolutionPage
         {
             get
             {
@@ -969,7 +969,7 @@ public bool IsInBatchUpdate
         /// Gets or sets the ability of a project filenode to have child nodes (sub items).
         /// Example would be C#/VB forms having resx and designer files.
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ bool CanFileNodesHaveChilds
+        public bool CanFileNodesHaveChilds
         {
             get
             {
@@ -1140,7 +1140,7 @@ public virtual string OutputBaseRelativePath
         /// <summary>
         /// Gets or sets the flag whether query edit should communicate with the scc manager.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ bool DisableQueryEdit
+        public bool DisableQueryEdit
         {
             get
             {
@@ -1155,7 +1155,6 @@ public virtual string OutputBaseRelativePath
         /// <summary>
         /// Gets a collection of integer ids that maps to project item instances
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/
         public IdItemMapping ItemIdMap
         {
             get
@@ -1178,7 +1177,7 @@ internal TrackDocumentsHelper Tracker
         /// <summary>
         /// Gets whether or not the readonly file attribute is set for this project.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public bool IsReadOnly
+        public bool IsReadOnly
         {
             get
             {
@@ -1189,7 +1188,7 @@ internal TrackDocumentsHelper Tracker
         /// <summary>
         /// Gets or sets the build logger.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ IDEBuildLogger BuildLogger
+        public IDEBuildLogger BuildLogger
         {
             get
             {
@@ -1205,7 +1204,7 @@ private set
         /// <summary>
         /// Gets the taskprovider.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ TaskProvider TaskProvider
+        public TaskProvider TaskProvider
         {
             get
             {
@@ -1224,7 +1223,7 @@ internal TaskReporter TaskReporter
         /// <summary>
         /// Gets the project file name.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ string FileName
+        public string FileName
         {
             get
             {
@@ -1236,7 +1235,7 @@ internal TaskReporter TaskReporter
         /// <summary>
         /// Gets the configuration provider.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ ConfigProvider ConfigProvider
+        public ConfigProvider ConfigProvider
         {
             get
             {
@@ -1265,7 +1264,7 @@ internal BuildActionConverter BuildActionConverter
         /// Gets or sets whether or not source code control is disabled for this project.
         /// </summary>
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scc")]
-        public /*protected, but public for FSharp.Project.dll*/ bool IsSccDisabled
+        public bool IsSccDisabled
         {
             get
             {
@@ -1281,7 +1280,7 @@ internal BuildActionConverter BuildActionConverter
         /// Gets or set whether items can be deleted for this project.
         /// Enabling this feature can have the potential destructive behavior such as deleting files from disk.
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ bool CanProjectDeleteItems
+        public bool CanProjectDeleteItems
         {
             get
             {
@@ -1296,7 +1295,7 @@ internal BuildActionConverter BuildActionConverter
         /// <summary>
         /// Determines whether the project was fully opened. This is set when the OnAfterOpenProject has triggered.
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ bool HasProjectOpened
+        public bool HasProjectOpened
         {
             get
             {
@@ -1307,7 +1306,7 @@ internal BuildActionConverter BuildActionConverter
         /// <summary>
         /// Gets or sets event triggering flags.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public EventTriggering EventTriggeringFlag
+        public EventTriggering EventTriggeringFlag
         {
             get
             {
@@ -1322,7 +1321,7 @@ internal BuildActionConverter BuildActionConverter
         /// <summary>
         /// Defines the build project that has loaded the project file.
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ Microsoft.Build.Evaluation.Project BuildProject
+        public Microsoft.Build.Evaluation.Project BuildProject
         {
             get
             {
@@ -1338,7 +1337,7 @@ internal BuildActionConverter BuildActionConverter
         /// <summary>
         /// Defines the build engine that is used to build the project file.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public Microsoft.Build.Evaluation.ProjectCollection BuildEngine
+        public Microsoft.Build.Evaluation.ProjectCollection BuildEngine
         {
             get
             {
@@ -1352,9 +1351,9 @@ internal BuildActionConverter BuildActionConverter
         }
 
 		/// <summary>
-		/// The /*internal, but public for FSharp.Project.dll*/ public package implementation.
+		/// The public package implementation.
 		/// </summary>
-		/*internal, but public for FSharp.Project.dll*/ public ProjectPackage Package
+		public ProjectPackage Package
 		{
 			get
 			{
@@ -1378,7 +1377,7 @@ protected ProjectNode()
         #endregion
 
         #region overridden methods
-        public /*protected, but public for FSharp.Project.dll*/ override NodeProperties CreatePropertiesObject()
+        public override NodeProperties CreatePropertiesObject()
         {
             return new ProjectNodeProperties(this);
         }
@@ -1868,7 +1867,7 @@ internal override int QueryStatusOnNode(Guid cmdGroup, uint cmd, IntPtr pCmdText
         /// <param name="pvaIn">Pointer to a VARIANTARG structure containing input arguments. Can be NULL</param>
         /// <param name="pvaOut">VARIANTARG structure to receive command output. Can be NULL.</param>
         /// <returns>If the method succeeds, it returns S_OK. If it fails, it returns an error code.</returns>
-        public /*protected, but public for FSharp.Project.dll*/ override int ExecCommandOnNode(Guid cmdGroup, uint cmd, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
+        public override int ExecCommandOnNode(Guid cmdGroup, uint cmd, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
         {
             if (cmdGroup == VsMenus.guidStandardCommandSet97)
             {
@@ -1929,7 +1928,7 @@ internal override int QueryStatusOnNode(Guid cmdGroup, uint cmd, IntPtr pCmdText
         /// </summary>
         /// <param name="deleteOperation">A flag that specifies the type of delete operation (delete from storage or remove from project)</param>
         /// <returns>true if item can be deleted from project</returns>
-        public /*protected, but public for FSharp.Project.dll*/ override bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
+        public override bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
         {
             if (deleteOperation == __VSDELETEITEMOPERATION.DELITEMOP_RemoveFromProject)
             {
@@ -2138,7 +2137,7 @@ public virtual void Load(string fileName, string location, string name, uint fla
             {
                 this.disableQueryEdit = true;
 
-                // set up /*internal, but public for FSharp.Project.dll*/ public members and icons
+                // set up public members and icons
                 canceled = 0;
 
                 this.ProjectMgr = this;
@@ -2313,7 +2312,7 @@ public virtual void OnOpenItem(string fullPathToSourceFile)
         /// <param name="key">Key to retrieve the target item from the subitems list</param>
         /// <returns>Newly added node</returns>
         /// <remarks>If the parent node was found we add the dependent item to it otherwise we add the item ignoring the "DependentUpon" metatdata</remarks>
-        public /*protected, but public for FSharp.Project.dll*/ virtual HierarchyNode AddDependentFileNode(IDictionary<String, Microsoft.Build.Evaluation.ProjectItem> subitems, string key)
+        public virtual HierarchyNode AddDependentFileNode(IDictionary<String, Microsoft.Build.Evaluation.ProjectItem> subitems, string key)
         {
             Microsoft.Build.Evaluation.ProjectItem item = subitems[key];
             subitems.Remove(key);
@@ -2908,7 +2907,7 @@ public virtual bool NodeHasDesigner(string itemPath)
 		/// List of Guids of the config independent property pages. It is called by the GetProperty for VSHPROPID_PropertyPagesCLSIDList property.
 		/// </summary>
 		/// <returns></returns>
-		public /*protected, but public for FSharp.Project.dll*/ virtual Guid[] GetConfigurationIndependentPropertyPages()
+		public virtual Guid[] GetConfigurationIndependentPropertyPages()
 		{
 			return new Guid[] { Guid.Empty };
 		}
@@ -2917,7 +2916,7 @@ public virtual bool NodeHasDesigner(string itemPath)
         /// Returns a list of Guids of the configuration dependent property pages. It is called by the GetProperty for VSHPROPID_CfgPropertyPagesCLSIDList property.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual Guid[] GetConfigurationDependentPropertyPages()
+        public virtual Guid[] GetConfigurationDependentPropertyPages()
         {
             return new Guid[0];
         }
@@ -2926,7 +2925,7 @@ public virtual bool NodeHasDesigner(string itemPath)
         /// An ordered list of guids of the prefered property pages. See <see cref="__VSHPROPID.VSHPROPID_PriorityPropertyPagesCLSIDList"/>
         /// </summary>
         /// <returns>An array of guids.</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual Guid[] GetPriorityProjectDesignerPages()
+        public virtual Guid[] GetPriorityProjectDesignerPages()
         {
             return new Guid[] { Guid.Empty };
         }
@@ -2940,7 +2939,7 @@ public virtual bool NodeHasDesigner(string itemPath)
         /// <param name="parent">the parent node where to add the subfolder if it does not exist.</param>
         /// <returns>the foldernode correcsponding to the path.</returns>
         [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "SubFolder")]
-        public /*protected, but public for FSharp.Project.dll*/ virtual FolderNode VerifySubFolderExists(string path, HierarchyNode parent)
+        public virtual FolderNode VerifySubFolderExists(string path, HierarchyNode parent)
         {
             FolderNode folderNode = null;
             uint uiItemId;
@@ -2992,7 +2991,7 @@ internal virtual FolderNode CreateFolderNode(string path, ProjectElement element
         /// Gets the list of selected HierarchyNode objects
         /// </summary>
         /// <returns>A list of HierarchyNode objects</returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual IList<HierarchyNode> GetSelectedNodes()
+        public virtual IList<HierarchyNode> GetSelectedNodes()
         {
             // Retrieve shell interface in order to get current selection
             IVsMonitorSelection monitorSelection = this.GetService(typeof(IVsMonitorSelection)) as IVsMonitorSelection;
@@ -3090,7 +3089,7 @@ internal virtual FolderNode CreateFolderNode(string path, ProjectElement element
         /// <summary>
         /// Recursevily walks the hierarchy nodes and redraws the state icons
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ override void UpdateSccStateIcons()
+        public override void UpdateSccStateIcons()
         {
             if (this.FirstChild == null)
             {
@@ -3108,7 +3107,7 @@ internal virtual FolderNode CreateFolderNode(string path, ProjectElement element
         /// Handles the shows all objects command.
         /// </summary>
         /// <returns></returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual int ShowAllFiles()
+        public virtual int ShowAllFiles()
         {
             return (int)OleConstants.OLECMDERR_E_NOTSUPPORTED;
         }
@@ -3117,7 +3116,7 @@ internal virtual FolderNode CreateFolderNode(string path, ProjectElement element
         /// Handles the Add web reference command.
         /// </summary>
         /// <returns></returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual int AddWebReference()
+        public virtual int AddWebReference()
         {
             return (int)OleConstants.OLECMDERR_E_NOTSUPPORTED;
         }
@@ -3126,7 +3125,7 @@ internal virtual FolderNode CreateFolderNode(string path, ProjectElement element
         /// Unloads the project.
         /// </summary>
         /// <returns></returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual int UnloadProject()
+        public virtual int UnloadProject()
         {
             return (int)OleConstants.OLECMDERR_E_NOTSUPPORTED;
         }
@@ -3135,7 +3134,7 @@ internal virtual FolderNode CreateFolderNode(string path, ProjectElement element
         /// Handles the clean project command.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual int CleanProject()
+        public virtual int CleanProject()
         {
             return (int)OleConstants.OLECMDERR_E_NOTSUPPORTED;
         }
@@ -3143,7 +3142,7 @@ internal virtual FolderNode CreateFolderNode(string path, ProjectElement element
         /// <summary>
         /// Reload project from project file
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void Reload()
+        public virtual void Reload()
         {
             Debug.Assert(this.buildEngine != null, "There is no build engine defined for this project");
 
@@ -3185,7 +3184,7 @@ internal virtual FolderNode CreateFolderNode(string path, ProjectElement element
         /// Renames the project file
         /// </summary>
         /// <param name="newFile">The full path of the new project file.</param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void RenameProjectFile(string newFile)
+        public virtual void RenameProjectFile(string newFile)
         {
             IVsUIShell shell = this.Site.GetService(typeof(SVsUIShell)) as IVsUIShell;
             Debug.Assert(shell != null, "Could not get the ui shell from the project");
@@ -3271,7 +3270,7 @@ internal virtual FolderNode CreateFolderNode(string path, ProjectElement element
         /// <summary>
         /// Filter items that should not be processed as file items. Example: Folders and References.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ virtual bool FilterItemTypeToBeAddedToHierarchy(string itemType)
+        public virtual bool FilterItemTypeToBeAddedToHierarchy(string itemType)
         {
             return (String.Compare(itemType, ProjectFileConstants.Reference, StringComparison.OrdinalIgnoreCase) == 0
                     || String.Compare(itemType, ProjectFileConstants.ProjectReference, StringComparison.OrdinalIgnoreCase) == 0
@@ -3285,7 +3284,7 @@ internal virtual FolderNode CreateFolderNode(string path, ProjectElement element
         /// Associate window output pane to the build logger
         /// </summary>
         /// <param name="output"></param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void SetOutputLogger(IVsOutputWindowPane output)
+        public virtual void SetOutputLogger(IVsOutputWindowPane output)
         {
             // Create our logger, if it was not specified
             if (!this.useProvidedLogger || this.buildLogger == null)
@@ -3684,7 +3683,7 @@ private void FinishSubmission(BuildSubmission submission, BuildAccessorAccess bu
         /// <remarks>The following common project properties are defaulted to projectName (if empty):
         ///    AssemblyName, Name and RootNamespace.
         /// If the project filename is not set then no properties are set</remarks>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void InitializeProjectProperties()
+        public virtual void InitializeProjectProperties()
         {
             // Get projectName from project filename. Return if not set
             string projectName = Path.GetFileNameWithoutExtension(this.filename);
@@ -3711,7 +3710,7 @@ private void FinishSubmission(BuildSubmission submission, BuildAccessorAccess bu
         /// Factory method for configuration provider
         /// </summary>
         /// <returns>Configuration provider created</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual ConfigProvider CreateConfigProvider()
+        public virtual ConfigProvider CreateConfigProvider()
         {
             return new ConfigProvider(this);
         }
@@ -3720,7 +3719,7 @@ private void FinishSubmission(BuildSubmission submission, BuildAccessorAccess bu
         /// Factory method for reference container node
         /// </summary>
         /// <returns>ReferenceContainerNode created</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual ReferenceContainerNode CreateReferenceContainerNode()
+        public virtual ReferenceContainerNode CreateReferenceContainerNode()
         {
             return new ReferenceContainerNode(this);
         }
@@ -3731,7 +3730,7 @@ private void FinishSubmission(BuildSubmission submission, BuildAccessorAccess bu
         /// <param name="newFileName">The new name of the project file.</param>
         /// <param name="saveCopyAs">if <c>true</c> - then SaveAs operation is performed on the copy of of current project file</param>
         /// <returns>Success value or an error code.</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual int SaveAs(string newFileName, bool saveCopyAs)
+        public virtual int SaveAs(string newFileName, bool saveCopyAs)
         {
             Debug.Assert(!String.IsNullOrEmpty(newFileName), "Cannot save project file for an empty or null file name");
 
@@ -3872,7 +3871,7 @@ private void FinishSubmission(BuildSubmission submission, BuildAccessorAccess bu
         /// An implementer can override this method to provide specialized semantics on how the project file is renamed in the msbuild file.
         /// </summary>
         /// <param name="newFileName">The new full path of the project file</param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void SaveMSBuildProjectFileAs(string newFileName)
+        public virtual void SaveMSBuildProjectFileAs(string newFileName)
         {
             Debug.Assert(!String.IsNullOrEmpty(newFileName), "Cannot save project file for an empty or null file name");
 
@@ -3941,7 +3940,7 @@ internal virtual ProjectElement AddFolderToMsBuild(string folder)
         /// <param name="originalFileName">The orginal filname.</param>
         /// <param name="computedNewFileName">The computed new file name, that will be copied to the project directory or into the folder .</param>
         /// <returns>S_OK for success, or an error message</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual int CanOverwriteExistingItem(string originalFileName, string computedNewFileName)
+        public virtual int CanOverwriteExistingItem(string originalFileName, string computedNewFileName)
         {
             if (String.IsNullOrEmpty(originalFileName) || String.IsNullOrEmpty(computedNewFileName))
             {
@@ -3986,7 +3985,7 @@ internal virtual ProjectElement AddFolderToMsBuild(string folder)
         /// Handle owerwriting of an existing item in the hierarchy.
         /// </summary>
         /// <param name="existingNode">The node that exists.</param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void OverwriteExistingItem(HierarchyNode existingNode)
+        public virtual void OverwriteExistingItem(HierarchyNode existingNode)
         {
 
         }
@@ -3996,7 +3995,7 @@ internal virtual ProjectElement AddFolderToMsBuild(string folder)
         /// </summary>
         /// <param name="parentNode">The parent of the new fileNode</param>
         /// <param name="fileName">The file name</param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual HierarchyNode AddNewFileNodeToHierarchy(HierarchyNode parentNode, string fileName)
+        public virtual HierarchyNode AddNewFileNodeToHierarchy(HierarchyNode parentNode, string fileName)
         {
             var ret = AddNewFileNodeToHierarchyCore(parentNode, fileName);
             FireAddNodeEvent(fileName);
@@ -4043,7 +4042,7 @@ private void FireAddNodeEvent(string fileName)
         /// Defines whther the current mode of the project is in a supress command mode.
         /// </summary>
         /// <returns></returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual bool IsCurrentStateASuppressCommandsMode()
+        public virtual bool IsCurrentStateASuppressCommandsMode()
         {
             if (VsShellUtilities.IsSolutionBuilding(this.Site))
             {
@@ -4074,7 +4073,7 @@ private void FireAddNodeEvent(string fileName)
         ///        - GetOutputGroupDescription
         /// </summary>
         /// <returns>List of output group name and corresponding MSBuild target</returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual IList<KeyValuePair<string, string>> GetOutputGroupNames()
+        public virtual IList<KeyValuePair<string, string>> GetOutputGroupNames()
         {
             return new List<KeyValuePair<string, string>>(outputGroupNames);
         }
@@ -4084,7 +4083,7 @@ private void FireAddNodeEvent(string fileName)
         /// </summary>
         /// <param name="canonicalName">Canonical name of the output group</param>
         /// <returns>Display name</returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual string GetOutputGroupDisplayName(string canonicalName)
+        public virtual string GetOutputGroupDisplayName(string canonicalName)
         {
             string result = SR.GetString(String.Format(CultureInfo.InvariantCulture, "Output{0}", canonicalName), CultureInfo.CurrentUICulture);
             if (String.IsNullOrEmpty(result))
@@ -4097,7 +4096,7 @@ private void FireAddNodeEvent(string fileName)
         /// </summary>
         /// <param name="canonicalName">Canonical name of the output group</param>
         /// <returns>Description</returns>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual string GetOutputGroupDescription(string canonicalName)
+        public virtual string GetOutputGroupDescription(string canonicalName)
         {
             string result = SR.GetString(String.Format(CultureInfo.InvariantCulture, "Output{0}Description", canonicalName), CultureInfo.CurrentUICulture);
             if (String.IsNullOrEmpty(result))
@@ -4110,7 +4109,7 @@ private void FireAddNodeEvent(string fileName)
         /// This does not get persisted and is used to evaluate msbuild conditions
         /// which are based on the $(Configuration) property.
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual void SetCurrentConfiguration()
+        public virtual void SetCurrentConfiguration()
         {
 #if FX_ATLEAST_45
             if ((this.GetService(typeof(SVsBuildManagerAccessor)) as IVsBuildManagerAccessor).IsInProgress())
@@ -4176,7 +4175,7 @@ internal void UpdateMSBuildState()
         /// <summary>
         /// Loads reference items from the project file into the hierarchy.
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual void ProcessReferences()
+        public virtual void ProcessReferences()
         {
             IReferenceContainer container = GetReferenceContainer();
             if (null == container)
@@ -4200,7 +4199,7 @@ internal void UpdateMSBuildState()
         /// <summary>
         /// Loads build actions for a project
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual void ProcessCustomBuildActions()
+        public virtual void ProcessCustomBuildActions()
         {
             // The buildActionConverter has a set of default actions that are always there:
             this.buildActionConverter.ResetBuildActionsToDefaults();
@@ -4218,7 +4217,7 @@ internal void UpdateMSBuildState()
             // Now that comprises the final list of item types that should be available.
         }
 
-        public /*protected internal, but public for FSharp.Project.dll*/void CheckForWildcards()
+        public void CheckForWildcards()
         {
             var dict = new Dictionary<Microsoft.Build.Construction.ProjectItemElement, Microsoft.Build.Evaluation.ProjectItem>();
             foreach (var item in MSBuildProject.GetStaticAndVisibleItemsInOrder(this.buildProject))
@@ -4236,7 +4235,7 @@ internal void UpdateMSBuildState()
         /// <summary>
         /// Loads file items from the project file into the hierarchy.
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual void ProcessFilesAndFolders()
+        public virtual void ProcessFilesAndFolders()
         {
             List<String> subitemsKeys = new List<String>();
             Dictionary<String, Microsoft.Build.Evaluation.ProjectItem> subitems = new Dictionary<String, Microsoft.Build.Evaluation.ProjectItem>();
@@ -4298,7 +4297,7 @@ internal void UpdateMSBuildState()
         /// </summary>
         /// <param name="subitemsKeys">List of sub item keys </param>
         /// <param name="subitems"></param>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual void ProcessDependentFileNodes(List<String> subitemsKeys, Dictionary<String, Microsoft.Build.Evaluation.ProjectItem> subitems)
+        public virtual void ProcessDependentFileNodes(List<String> subitemsKeys, Dictionary<String, Microsoft.Build.Evaluation.ProjectItem> subitems)
         {
             foreach (string key in subitemsKeys)
             {
@@ -4314,7 +4313,7 @@ internal void UpdateMSBuildState()
         /// <summary>
         /// For flavored projects which implement IPersistXMLFragment, load the information now
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual void LoadNonBuildInformation()
+        public virtual void LoadNonBuildInformation()
         {
             IVsHierarchy outerHierarchy = InteropSafeIVsHierarchy;
             if (outerHierarchy is IPersistXMLFragment)
@@ -4326,7 +4325,7 @@ internal void UpdateMSBuildState()
         /// <summary>
         /// Used to sort nodes in the hierarchy.
         /// </summary>
-        public /*protected internal, but public for FSharp.Project.dll*/ abstract int CompareNodes(HierarchyNode node1, HierarchyNode node2);
+        public abstract int CompareNodes(HierarchyNode node1, HierarchyNode node2);
 
         /// <summary>
         /// Handles global properties related to configuration and platform changes invoked by a change in the active configuration.
@@ -4677,7 +4676,7 @@ internal bool QueryEditProjectFile(bool suppressUI)
         /// </summary>
         /// <param name="hierarchy"></param>
         /// <returns></returns>
-        /*internal, but public for FSharp.Project.dll*/ public NestedProjectNode GetNestedProjectForHierarchy(IVsHierarchy hierarchy)
+        public NestedProjectNode GetNestedProjectForHierarchy(IVsHierarchy hierarchy)
         {
             if (hierarchy != null && (hierarchy is IVsProject3))
             {
@@ -4707,7 +4706,7 @@ internal bool QueryEditProjectFile(bool suppressUI)
         /// If the node is a ProjectNode it is the project folder.
         /// Otherwise (such as FileNode subitem) it delegate the resolution to the parent node.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public string GetBaseDirectoryForAddingFiles(HierarchyNode nodeToAddFile)
+        public string GetBaseDirectoryForAddingFiles(HierarchyNode nodeToAddFile)
         {
             string baseDir = String.Empty;
 
@@ -4728,7 +4727,7 @@ internal bool QueryEditProjectFile(bool suppressUI)
         }
 
         /// <summary>
-        /// For /*internal, but public for FSharp.Project.dll*/ public use only.
+        /// For public use only.
         /// This creates a copy of an existing configuration and add it to the project.
         /// Caller should change the condition on the PropertyGroup.
         /// If derived class want to accomplish this, they should call ConfigProvider.AddCfgsOfCfgName()
@@ -4737,7 +4736,7 @@ internal bool QueryEditProjectFile(bool suppressUI)
         /// </summary>
         /// <param name="group">PropertyGroup to clone</param>
         /// <returns></returns>
-        /*internal, but public for FSharp.Project.dll*/ public Microsoft.Build.Construction.ProjectPropertyGroupElement ClonePropertyGroup(Microsoft.Build.Construction.ProjectPropertyGroupElement group)
+        public Microsoft.Build.Construction.ProjectPropertyGroupElement ClonePropertyGroup(Microsoft.Build.Construction.ProjectPropertyGroupElement group)
         {
             // Create a new (empty) PropertyGroup
             Microsoft.Build.Construction.ProjectPropertyGroupElement newPropertyGroup = this.buildProject.Xml.AddPropertyGroup();
@@ -4761,7 +4760,7 @@ internal bool QueryEditProjectFile(bool suppressUI)
         /// Register the project with the Scc manager.
         /// </summary>
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Scc")]
-        public /*protected, but public for FSharp.Project.dll*/ void RegisterSccProject()
+        public void RegisterSccProject()
         {
 
             if (this.IsSccDisabled || this.isRegisteredWithScc || String.IsNullOrEmpty(this.sccProjectName))
@@ -4784,7 +4783,7 @@ internal bool QueryEditProjectFile(bool suppressUI)
         /// </summary>
         [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "UnRegister")]
         [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Un")]
-        public /*protected, but public for FSharp.Project.dll*/ void UnRegisterProject()
+        public void UnRegisterProject()
         {
             if (this.IsSccDisabled || !this.isRegisteredWithScc)
             {
@@ -4806,7 +4805,7 @@ internal bool QueryEditProjectFile(bool suppressUI)
         /// <param name="type">Type of the object for which you want the CATID</param>
         /// <returns>CATID</returns>
         [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "CATID")]
-        public /*protected internal, but public for FSharp.Project.dll*/ Guid GetCATIDForType(Type type)
+        public Guid GetCATIDForType(Type type)
         {
             if (type == null)
                 throw new ArgumentNullException("type");
@@ -4827,7 +4826,7 @@ internal bool QueryEditProjectFile(bool suppressUI)
         /// <param name="catid">GUID that extender can use to uniquely identify your object type</param>
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "catid")]
         [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "CATID")]
-        public /*protected, but public for FSharp.Project.dll*/ void AddCATIDMapping(Type type, Guid catid)
+        public void AddCATIDMapping(Type type, Guid catid)
         {
             catidMapping.Add(type, catid);
         }
@@ -4837,7 +4836,7 @@ internal bool QueryEditProjectFile(bool suppressUI)
         /// </summary>
         /// <param name="persistXmlFragment">Object that support being initialized with an XML fragment</param>
         /// <param name="configName">Name of the configuration being initialized, null if it is the project</param>
-        public /*protected internal, but public for FSharp.Project.dll*/ void LoadXmlFragment(IPersistXMLFragment persistXmlFragment, string configName)
+        public void LoadXmlFragment(IPersistXMLFragment persistXmlFragment, string configName)
         {
             if (xmlFragments == null)
             {
@@ -4912,7 +4911,7 @@ internal bool QueryEditProjectFile(bool suppressUI)
         /// Retrieve all XML fragments that need to be saved from the flavors and store the information in msbuild.
         /// </summary>
         [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "XML")]
-        public /*protected, but public for FSharp.Project.dll*/ void PersistXMLFragments()
+        public void PersistXMLFragments()
         {
             if (this.IsFlavorDirty() != 0)
             {
@@ -5048,7 +5047,7 @@ public virtual int IsDirty(out int isDirty)
             return VSConstants.S_OK;
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ int IsFlavorDirty()
+        public int IsFlavorDirty()
         {
             int isDirty = 0;
             // See if one of our flavor consider us dirty
@@ -7050,7 +7049,6 @@ bool ValidateResolvedAsmVersion(Microsoft.Build.Execution.ProjectItemInstance it
         /// <summary>
         /// Get the outer T implementation.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/
         private T GetOuterAs<T>()
             where T : class
         {
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectReferenceNode.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectReferenceNode.cs
index f43fbdcbbdf..449fb80423c 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectReferenceNode.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ProjectReferenceNode.cs
@@ -108,7 +108,7 @@ public override string Caption
             }
         }
 
-        /*internal, but public for FSharp.Project.dll*/ public Guid ReferencedProjectGuid
+        public Guid ReferencedProjectGuid
         {
             get
             {
@@ -120,7 +120,7 @@ public override string Caption
         /// Possiblity to shortcut and set the dangling project reference icon.
         /// It is ussually manipulated by solution listsneres who handle reference updates.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public bool IsNodeValid
+        public bool IsNodeValid
         {
             get
             {
@@ -135,7 +135,7 @@ public override string Caption
         /// <summary>
         /// Controls the state whether this reference can be removed or not. Think of the project unload scenario where the project reference should not be deleted.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public bool CanRemoveReference
+        public bool CanRemoveReference
         {
             get
             {
@@ -147,7 +147,7 @@ public override string Caption
             }
         }
 
-        /*internal, but public for FSharp.Project.dll*/ public string ReferencedProjectName
+        public string ReferencedProjectName
         {
             get { return this.referencedProjectName; }
         }
@@ -255,7 +255,7 @@ private void InitReferencedProject(IVsSolution solution)
         /// <summary>
         /// Gets the automation object for the referenced project.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ private EnvDTE.Project ReferencedProject
+        private EnvDTE.Project ReferencedProject
         {
             get
             {
@@ -494,7 +494,7 @@ private string GetReferencedProjectOutputPath()
         }
 
         private Automation.OAProjectReference projectReference;
-        /*internal, but public for FSharp.Project.dll*/ public override object Object
+        public override object Object
         {
             get
             {
@@ -606,7 +606,7 @@ internal ProjectReferenceNode(ProjectNode root, string referencedProjectName, st
         #endregion
 
         #region methods
-        public /*protected, but public for FSharp.Project.dll*/ override NodeProperties CreatePropertiesObject()
+        public override NodeProperties CreatePropertiesObject()
         {
             return new ProjectReferencesProperties(this);
         }
@@ -689,7 +689,7 @@ public override void Remove(bool removeFromStorage)
         /// <summary>
         /// Links a reference node to the project file.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ override void BindReferenceData()
+        public override void BindReferenceData()
         {
             Debug.Assert(!String.IsNullOrEmpty(this.referencedProjectName), "The referencedProjectName field has not been initialized");
             Debug.Assert(this.referencedProjectGuid != Guid.Empty, "The referencedProjectName field has not been initialized");
@@ -711,7 +711,7 @@ public override void Remove(bool removeFromStorage)
         /// Defines whether this node is valid node for painting the refererence icon.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ override bool CanShowDefaultIcon()
+        public override bool CanShowDefaultIcon()
         {
             if (this.referencedProjectGuid == Guid.Empty || this.ProjectMgr == null || this.ProjectMgr.IsClosed || this.isNodeValid)
             {
@@ -770,7 +770,7 @@ public override void Remove(bool removeFromStorage)
         /// Checks if a project reference can be added to the hierarchy. It calls base to see if the reference is not already there, then checks for circular references.
         /// </summary>
         /// <returns></returns>
-        internal /*protected, but public for FSharp.Project.dll*/ override AddReferenceCheckResult CheckIfCanAddReference()
+        internal override AddReferenceCheckResult CheckIfCanAddReference()
         {
             // When this method is called this refererence has not yet been added to the hierarchy, only instantiated.
             var checkResult = base.CheckIfCanAddReference();
@@ -820,7 +820,7 @@ private bool IsReferenceInCycle(Guid projectGuid)
             return isCircular != 0;
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override Guid GetBrowseLibraryGuid()
+        public override Guid GetBrowseLibraryGuid()
         {
             if (this.Url.EndsWith(".csproj"))
             {
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ReferenceContainerNode.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ReferenceContainerNode.cs
index 8768304b301..9623ea526e5 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ReferenceContainerNode.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ReferenceContainerNode.cs
@@ -33,7 +33,7 @@ internal enum AddReferenceDialogTab
     public class ReferenceContainerNode : HierarchyNode, IReferenceContainer
     {
         #region fields
-        /*internal, but public for FSharp.Project.dll*/ public const string ReferencesNodeVirtualName = "References";
+        public const string ReferencesNodeVirtualName = "References";
         private List<ProjectReferenceNode> projectReferencesWithEnabledCaching = new List<ProjectReferenceNode>();
         #endregion
         
@@ -51,7 +51,7 @@ internal ReferenceContainerNode(ProjectNode root) : base(root)
             ProjectFileConstants.Reference,
             ProjectFileConstants.COMReference
         };
-        public /*protected, but public for FSharp.Project.dll*/ virtual string[] SupportedReferenceTypes
+        public virtual string[] SupportedReferenceTypes
         {
             get { return supportedReferenceTypes; }
         }
@@ -93,7 +93,7 @@ public override string Caption
 
 
         private Automation.OAReferences references;
-        /*internal, but public for FSharp.Project.dll*/ public override object Object
+        public override object Object
         {
             get
             {
@@ -149,7 +149,7 @@ public override object GetIconHandle(bool open)
         /// References node cannot be dragged.
         /// </summary>
         /// <returns>A stringbuilder.</returns>
-        public /*protected, but public for FSharp.Project.dll*/ override StringBuilder PrepareSelectedNodesForClipBoard()
+        public override StringBuilder PrepareSelectedNodesForClipBoard()
         {
             return null;
         }
@@ -157,7 +157,7 @@ public override object GetIconHandle(bool open)
         /// <summary>
         /// Not supported.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ override int ExcludeFromProject()
+        public override int ExcludeFromProject()
         {
             return (int)OleConstants.OLECMDERR_E_NOTSUPPORTED;
         }
@@ -209,7 +209,7 @@ internal override int QueryStatusOnNode(Guid cmdGroup, uint cmd, IntPtr pCmdText
             return base.QueryStatusOnNode(cmdGroup, cmd, pCmdText, ref result);
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override int ExecCommandOnNode(Guid cmdGroup, uint cmd, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
+        public override int ExecCommandOnNode(Guid cmdGroup, uint cmd, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
         {
             if (cmdGroup == VsMenus.guidStandardCommandSet2K)
             {
@@ -237,7 +237,7 @@ internal override int QueryStatusOnNode(Guid cmdGroup, uint cmd, IntPtr pCmdText
             return base.ExecCommandOnNode(cmdGroup, cmd, nCmdexecopt, pvaIn, pvaOut);
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
+        public override bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
         {
             return false;
         }
@@ -246,7 +246,7 @@ internal override int QueryStatusOnNode(Guid cmdGroup, uint cmd, IntPtr pCmdText
         /// Defines whether this node is valid node for painting the refererences icon.
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ override bool CanShowDefaultIcon()
+        public override bool CanShowDefaultIcon()
         {
             if (!String.IsNullOrEmpty(this.VirtualNodeName))
             {
@@ -546,7 +546,7 @@ internal virtual ProjectReferenceNode CreateProjectReferenceNode(ProjectElement
         /// <summary>
         /// Create a Project to Project reference given a VSCOMPONENTSELECTORDATA structure
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ virtual ProjectReferenceNode CreateProjectReferenceNode(VSCOMPONENTSELECTORDATA selectorData)
+        public virtual ProjectReferenceNode CreateProjectReferenceNode(VSCOMPONENTSELECTORDATA selectorData)
         {
             return new ProjectReferenceNode(this.ProjectMgr, selectorData.bstrTitle, selectorData.bstrFile, selectorData.bstrProjRef);
         }
@@ -694,7 +694,7 @@ private ComReferenceNode CreateComReferenceNode(string fileReference)
         /// <summary>
         /// Creates a com reference node from a selector data.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ virtual ComReferenceNode CreateComReferenceNode(Microsoft.VisualStudio.Shell.Interop.VSCOMPONENTSELECTORDATA selectorData)
+        public virtual ComReferenceNode CreateComReferenceNode(Microsoft.VisualStudio.Shell.Interop.VSCOMPONENTSELECTORDATA selectorData)
         {
             ComReferenceNode node = new ComReferenceNode(this.ProjectMgr, selectorData);
             return node;
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ReferenceNode.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ReferenceNode.cs
index c31583e0058..c65985ed911 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ReferenceNode.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/ReferenceNode.cs
@@ -25,7 +25,7 @@ namespace Microsoft.VisualStudio.FSharp.ProjectSystem
     [CLSCompliant(false), ComVisible(true)]
     public abstract class ReferenceNode : HierarchyNode
     {
-        public /*protected, but public for FSharp.Project.dll*/ delegate void CannotAddReferenceErrorMessage();
+        public delegate void CannotAddReferenceErrorMessage();
 
         #region ctors
         /// <summary>
@@ -77,7 +77,7 @@ public override string Caption
         #endregion
 
         #region overridden methods
-        public /*protected, but public for FSharp.Project.dll*/ override NodeProperties CreatePropertiesObject()
+        public override NodeProperties CreatePropertiesObject()
         {
             return new ReferenceNodeProperties(this);
         }
@@ -124,7 +124,7 @@ public override string GetMkDocument()
         /// <summary>
         /// Not supported.
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ override int ExcludeFromProject()
+        public override int ExcludeFromProject()
         {
             return (int)OleConstants.OLECMDERR_E_NOTSUPPORTED;
         }
@@ -133,12 +133,12 @@ public override string GetMkDocument()
         /// References node cannot be dragged.
         /// </summary>
         /// <returns>A stringbuilder.</returns>
-        public /*protected, but public for FSharp.Project.dll*/ override StringBuilder PrepareSelectedNodesForClipBoard()
+        public override StringBuilder PrepareSelectedNodesForClipBoard()
         {
             return null;
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override void DoDefaultAction()
+        public override void DoDefaultAction()
         {
             this.ShowObjectBrowser();
         }
@@ -183,7 +183,7 @@ internal override int QueryStatusOnNode(Guid cmdGroup, uint cmd, IntPtr pCmdText
             return base.QueryStatusOnNode(cmdGroup, cmd, pCmdText, ref result);
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override int ExecCommandOnNode(Guid cmdGroup, uint cmd, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
+        public override int ExecCommandOnNode(Guid cmdGroup, uint cmd, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
         {
             if (cmdGroup == VsMenus.guidStandardCommandSet2K)
             {
@@ -254,7 +254,6 @@ public virtual bool AddReference()
         /// <summary>
         /// Refreshes a reference by re-resolving it and redrawing the icon.
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/
         internal virtual void RefreshReference(BuildResult buildResult)
         {
             this.ResolveReference(buildResult);
@@ -264,7 +263,7 @@ internal virtual void RefreshReference(BuildResult buildResult)
         /// <summary>
         /// Resolves references.
         /// </summary>
-        internal /*protected, but public for FSharp.Project.dll*/ virtual void ResolveReference(BuildResult buildResult)
+        internal virtual void ResolveReference(BuildResult buildResult)
         {
 
         }
@@ -273,7 +272,7 @@ internal virtual void RefreshReference(BuildResult buildResult)
         /// Validates that a reference can be added.
         /// </summary>
         /// <returns>Success if the reference can be added.</returns>
-        internal /*protected, but public for FSharp.Project.dll*/ virtual AddReferenceCheckResult CheckIfCanAddReference()
+        internal virtual AddReferenceCheckResult CheckIfCanAddReference()
         {
             // When this method is called this refererence has not yet been added to the hierarchy, only instantiated.
             ReferenceNode existingNode;
@@ -290,7 +289,7 @@ internal virtual void RefreshReference(BuildResult buildResult)
         /// Checks if a reference is already added. The method parses all references and compares the Url.
         /// </summary>
         /// <returns>true if the assembly has already been added.</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual bool IsAlreadyAdded(out ReferenceNode existingNode)
+        public virtual bool IsAlreadyAdded(out ReferenceNode existingNode)
         {
             ReferenceContainerNode referencesFolder = this.ProjectMgr.FindChild(ReferenceContainerNode.ReferencesNodeVirtualName) as ReferenceContainerNode;
             Debug.Assert(referencesFolder != null, "Could not find the References node");
@@ -315,7 +314,7 @@ internal virtual void RefreshReference(BuildResult buildResult)
         /// <summary>
         /// Gets the Guid to use to set VSOJBECTINFO.pguidLib for the call to IVsObjBrowser.NavigateTo
         /// </summary>
-        public /*protected, but public for FSharp.Project.dll*/ virtual Guid GetBrowseLibraryGuid()
+        public virtual Guid GetBrowseLibraryGuid()
         {
             return Guid.Empty;
         }
@@ -329,7 +328,7 @@ protected virtual bool CanShowUrlInOnObjectBrowser()
         /// Shows the Object Browser
         /// </summary>
         /// <returns></returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual int ShowObjectBrowser()
+        public virtual int ShowObjectBrowser()
         {
             if (!CanShowUrlInOnObjectBrowser())
             {
@@ -371,7 +370,7 @@ protected virtual bool CanShowUrlInOnObjectBrowser()
             return returnValue;
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ override bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
+        public override bool CanDeleteItem(__VSDELETEITEMOPERATION deleteOperation)
         {
             if (deleteOperation == __VSDELETEITEMOPERATION.DELITEMOP_RemoveFromProject)
             {
@@ -380,7 +379,7 @@ protected virtual bool CanShowUrlInOnObjectBrowser()
             return false;
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ abstract void BindReferenceData();
+        public abstract void BindReferenceData();
 
         #endregion
 
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/RegisteredProjectType.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/RegisteredProjectType.cs
index 0e3856bf30d..5e9fb1fff96 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/RegisteredProjectType.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/RegisteredProjectType.cs
@@ -25,14 +25,14 @@ internal class RegisteredProjectType
 
         private Guid packageGuid;
 
-        /*internal, but public for FSharp.Project.dll*/ public const string DefaultProjectExtension = "DefaultProjectExtension";
-        /*internal, but public for FSharp.Project.dll*/ public const string WizardsTemplatesDir = "WizardsTemplatesDir";
-        /*internal, but public for FSharp.Project.dll*/ public const string ProjectTemplatesDir = "ProjectTemplatesDir";
-        /*internal, but public for FSharp.Project.dll*/ public const string Package = "Package";
+        public const string DefaultProjectExtension = "DefaultProjectExtension";
+        public const string WizardsTemplatesDir = "WizardsTemplatesDir";
+        public const string ProjectTemplatesDir = "ProjectTemplatesDir";
+        public const string Package = "Package";
 
 
 
-        /*internal, but public for FSharp.Project.dll*/ public string DefaultProjectExtensionValue
+        public string DefaultProjectExtensionValue
         {
             get
             {
@@ -44,7 +44,7 @@ internal class RegisteredProjectType
             }
         }
 
-        /*internal, but public for FSharp.Project.dll*/ public string ProjectTemplatesDirValue
+        public string ProjectTemplatesDirValue
         {
             get
             {
@@ -56,7 +56,7 @@ internal class RegisteredProjectType
             }
         }
 
-        /*internal, but public for FSharp.Project.dll*/ public string WizardTemplatesDirValue
+        public string WizardTemplatesDirValue
         {
             get
             {
@@ -68,7 +68,7 @@ internal class RegisteredProjectType
             }
         }
 
-        /*internal, but public for FSharp.Project.dll*/ public Guid PackageGuidValue
+        public Guid PackageGuidValue
         {
             get
             {
@@ -86,7 +86,7 @@ internal class RegisteredProjectType
         /// 
         /// You can pass in a string such as: "Windows\Console Application"
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public string GetVsTemplateFile(string templateFile)
+        public string GetVsTemplateFile(string templateFile)
         {
             // First see if this use the vstemplate model
             if (!String.IsNullOrEmpty(DefaultProjectExtensionValue))
@@ -118,7 +118,7 @@ internal class RegisteredProjectType
             return null;
         }
 
-        /*internal, but public for FSharp.Project.dll*/ public static RegisteredProjectType CreateRegisteredProjectType(Guid projectTypeGuid)
+        public static RegisteredProjectType CreateRegisteredProjectType(Guid projectTypeGuid)
         {
             RegisteredProjectType registederedProjectType = null;
 
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SelectionListener.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SelectionListener.cs
index 9ff48fe1234..4aed88ff137 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SelectionListener.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SelectionListener.cs
@@ -37,7 +37,7 @@ internal abstract class SelectionListener : IVsSelectionEvents, IDisposable
         #endregion
 
         #region ctors
-        public /*protected, but public for FSharp.Project.dll*/ SelectionListener(ServiceProvider serviceProvider)
+        public SelectionListener(ServiceProvider serviceProvider)
         {
 
             this.serviceProvider = serviceProvider;
@@ -53,7 +53,7 @@ internal abstract class SelectionListener : IVsSelectionEvents, IDisposable
         #endregion
 
         #region properties
-        public /*protected, but public for FSharp.Project.dll*/ uint EventsCookie
+        public uint EventsCookie
         {
             get
             {
@@ -61,7 +61,7 @@ internal abstract class SelectionListener : IVsSelectionEvents, IDisposable
             }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ IVsMonitorSelection SelectionMonitor
+        public IVsMonitorSelection SelectionMonitor
         {
             get
             {
@@ -69,7 +69,7 @@ internal abstract class SelectionListener : IVsSelectionEvents, IDisposable
             }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ ServiceProvider ServiceProvider
+        public ServiceProvider ServiceProvider
         {
             get
             {
@@ -121,7 +121,7 @@ public void Init()
         /// The method that does the cleanup.
         /// </summary>
         /// <param name="disposing"></param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void Dispose(bool disposing)
+        public virtual void Dispose(bool disposing)
         {
             // Everybody can go here.
             if (!this.isDisposed)
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SingleFileGenerator.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SingleFileGenerator.cs
index 5057782d6e4..99360e7494f 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SingleFileGenerator.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SingleFileGenerator.cs
@@ -34,7 +34,7 @@ internal class SingleFileGenerator : ISingleFileGenerator, IVsGeneratorProgress
         /// Overloadde ctor.
         /// </summary>
         /// <param name="ProjectNode">The associated project</param>
-        /*internal, but public for FSharp.Project.dll*/ public SingleFileGenerator(ProjectNode projectMgr)
+        public SingleFileGenerator(ProjectNode projectMgr)
         {
             this.projectMgr = projectMgr;
         }
@@ -90,7 +90,7 @@ public virtual void RunGenerator(string document)
         /// Invokes the specified generator
         /// </summary>
         /// <param name="fileNode">The node on which to invoke the generator.</param>
-        public /*protected internal, but public for FSharp.Project.dll*/ virtual void InvokeGenerator(FileNode fileNode)
+        public virtual void InvokeGenerator(FileNode fileNode)
         {
             if (fileNode == null)
             {
@@ -206,7 +206,7 @@ public virtual void RunGenerator(string document)
         /// with "." for the directory in which the file is located.
         /// </summary>
         /// <returns>Returns the computed name space</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual string ComputeNamespace(string projectItemPath)
+        public virtual string ComputeNamespace(string projectItemPath)
         {
             if (String.IsNullOrEmpty(projectItemPath))
             {
@@ -237,7 +237,7 @@ public virtual void RunGenerator(string document)
         /// <param name="size">size of the data</param>
         /// <param name="fileName">Name of the file to update or create</param>
         /// <returns>full path of the file</returns>
-        public /*protected, but public for FSharp.Project.dll*/ virtual string UpdateGeneratedCodeFile(FileNode fileNode, byte[] data, int size, string fileName)
+        public virtual string UpdateGeneratedCodeFile(FileNode fileNode, byte[] data, int size, string fileName)
         {
             string filePath = Path.Combine(Path.GetDirectoryName(fileNode.GetMkDocument()), fileName);
             IVsRunningDocumentTable rdt = this.projectMgr.GetService(typeof(SVsRunningDocumentTable)) as IVsRunningDocumentTable;
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SolutionListener.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SolutionListener.cs
index 595823a31d5..7fbed26d973 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SolutionListener.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SolutionListener.cs
@@ -38,7 +38,7 @@ internal abstract class SolutionListener : IVsSolutionEvents3, IVsSolutionEvents
         #endregion
 
         #region ctors
-        public /*protected, but public for FSharp.Project.dll*/ SolutionListener(IServiceProvider serviceProvider)
+        public SolutionListener(IServiceProvider serviceProvider)
         {
 
             this.serviceProvider = serviceProvider;
@@ -54,7 +54,7 @@ internal abstract class SolutionListener : IVsSolutionEvents3, IVsSolutionEvents
         #endregion
 
         #region properties
-        public /*protected, but public for FSharp.Project.dll*/ uint EventsCookie
+        public uint EventsCookie
         {
             get
             {
@@ -62,7 +62,7 @@ internal abstract class SolutionListener : IVsSolutionEvents3, IVsSolutionEvents
             }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ IVsSolution Solution
+        public IVsSolution Solution
         {
             get
             {
@@ -70,7 +70,7 @@ internal abstract class SolutionListener : IVsSolutionEvents3, IVsSolutionEvents
             }
         }
 
-        public /*protected, but public for FSharp.Project.dll*/ IServiceProvider ServiceProvider
+        public IServiceProvider ServiceProvider
         {
             get
             {
@@ -207,7 +207,7 @@ public void Init()
         /// The method that does the cleanup.
         /// </summary>
         /// <param name="disposing"></param>
-        public /*protected, but public for FSharp.Project.dll*/ virtual void Dispose(bool disposing)
+        public virtual void Dispose(bool disposing)
         {
             // Everybody can go here.
             if (!this.isDisposed)
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SolutionListenerForProjectEvents.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SolutionListenerForProjectEvents.cs
index f57422f8644..3ade2d86fe7 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SolutionListenerForProjectEvents.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/SolutionListenerForProjectEvents.cs
@@ -40,7 +40,7 @@ internal class SolutionListenerForProjectEvents : SolutionListener, IProjectEven
         #endregion
 
         #region ctor
-        /*internal, but public for FSharp.Project.dll*/ public SolutionListenerForProjectEvents(IServiceProvider serviceProvider)
+        public SolutionListenerForProjectEvents(IServiceProvider serviceProvider)
             : base(serviceProvider)
         {
         }
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/StructuresEnums.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/StructuresEnums.cs
index e90dfb9b187..66476da5ef6 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/StructuresEnums.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/StructuresEnums.cs
@@ -356,14 +356,14 @@ public class AfterProjectFileOpenedEventArgs : EventArgs
         /// True if the project is added to the solution after the solution is opened. false if the project is added to the solution while the solution is being opened.
         /// </summary>
         [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        /*internal, but public for FSharp.Project.dll*/ public bool Added
+        public bool Added
         {
             get { return this.added; }
         }
         #endregion
 
         #region ctor
-        /*internal, but public for FSharp.Project.dll*/ public AfterProjectFileOpenedEventArgs(bool added)
+        public AfterProjectFileOpenedEventArgs(bool added)
         {
             this.added = added;
         }
@@ -381,14 +381,14 @@ public class BeforeProjectFileClosedEventArgs : EventArgs
         /// true if the project was removed from the solution before the solution was closed. false if the project was removed from the solution while the solution was being closed.
         /// </summary>
         [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        /*internal, but public for FSharp.Project.dll*/ public bool Removed
+        public bool Removed
         {
             get { return this.removed; }
         }
         #endregion
 
         #region ctor
-        /*internal, but public for FSharp.Project.dll*/ public BeforeProjectFileClosedEventArgs(bool removed)
+        public BeforeProjectFileClosedEventArgs(bool removed)
         {
             this.removed = removed;
         }
@@ -402,7 +402,7 @@ internal class HierarchyNodeEventArgs : EventArgs
     {
         private HierarchyNode child;
 
-        /*internal, but public for FSharp.Project.dll*/ public HierarchyNodeEventArgs(HierarchyNode child)
+        public HierarchyNodeEventArgs(HierarchyNode child)
         {
             this.child = child;
         }
@@ -440,7 +440,7 @@ internal class FileChangedOnDiskEventArgs : EventArgs
         /// </summary>
         /// <param name="fileName">File name that was changed on disk.</param>
         /// <param name="id">The item id of the file that was changed on disk.</param>
-        /*internal, but public for FSharp.Project.dll*/ public FileChangedOnDiskEventArgs(string fileName, uint id, _VSFILECHANGEFLAGS flag)
+        public FileChangedOnDiskEventArgs(string fileName, uint id, _VSFILECHANGEFLAGS flag)
         {
             this.fileName = fileName;
             this.itemID = id;
@@ -451,7 +451,7 @@ internal class FileChangedOnDiskEventArgs : EventArgs
         /// Gets the file name that was changed on disk.
         /// </summary>
         /// <value>The file that was changed on disk.</value>
-        /*internal, but public for FSharp.Project.dll*/ public string FileName
+        public string FileName
         {
             get
             {
@@ -463,7 +463,7 @@ internal class FileChangedOnDiskEventArgs : EventArgs
         /// Gets item id of the file that has changed
         /// </summary>
         /// <value>The file that was changed on disk.</value>
-        /*internal, but public for FSharp.Project.dll*/ public uint ItemID
+        public uint ItemID
         {
             get
             {
@@ -475,7 +475,7 @@ internal class FileChangedOnDiskEventArgs : EventArgs
         /// The reason while the file has chnaged on disk.
         /// </summary>
         /// <value>The reason while the file has chnaged on disk.</value>
-        /*internal, but public for FSharp.Project.dll*/ public _VSFILECHANGEFLAGS FileChangeFlag
+        public _VSFILECHANGEFLAGS FileChangeFlag
         {
             get
             {
@@ -500,7 +500,7 @@ internal class ActiveConfigurationChangedEventArgs : EventArgs
         /// Constructs a new event args.
         /// </summary>
         /// <param name="hierarchy">The hierarchy that has changed its configuration.</param>
-        /*internal, but public for FSharp.Project.dll*/ public ActiveConfigurationChangedEventArgs(IVsHierarchy hierarchy)
+        public ActiveConfigurationChangedEventArgs(IVsHierarchy hierarchy)
         {
             this.hierarchy = hierarchy;
         }
@@ -508,7 +508,7 @@ internal class ActiveConfigurationChangedEventArgs : EventArgs
         /// <summary>
         /// The hierarchy whose configuration has changed 
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public IVsHierarchy Hierarchy
+        public IVsHierarchy Hierarchy
         {
             get
             {
@@ -527,7 +527,7 @@ internal class ProjectPropertyChangedArgs : EventArgs
         private string oldValue;
         private string newValue;
 
-        /*internal, but public for FSharp.Project.dll*/ public ProjectPropertyChangedArgs(string propertyName, string oldValue, string newValue)
+        public ProjectPropertyChangedArgs(string propertyName, string oldValue, string newValue)
         {
             this.propertyName = propertyName;
             this.oldValue = oldValue;
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/TokenProcessor.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/TokenProcessor.cs
index 76952d870fd..582a944bc05 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/TokenProcessor.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/TokenProcessor.cs
@@ -263,7 +263,7 @@ private string GuidToForm2(Guid value)
         /// <param name="c">Character to validate</param>
         /// <returns>true if successful false otherwise</returns>
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "c")]
-        public /*protected, but public for FSharp.Project.dll*/ bool IsValidIdentifierChar(char c)
+        public bool IsValidIdentifierChar(char c)
         {
             if ((c >= 'a') && (c <= 'z'))
             {
@@ -291,7 +291,7 @@ private string GuidToForm2(Guid value)
         /// <param name="c">Start character</param>
         /// <returns>true if successful false otherwise</returns>
         [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "c")]
-        public /*protected, but public for FSharp.Project.dll*/ bool IsValidIdentifierStartChar(char c)
+        public bool IsValidIdentifierStartChar(char c)
         {
             if (!IsValidIdentifierChar(c))
             {
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/TrackDocumentsHelper.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/TrackDocumentsHelper.cs
index f4a7f849e0e..5aed081d66a 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/TrackDocumentsHelper.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/TrackDocumentsHelper.cs
@@ -37,7 +37,7 @@ internal class TrackDocumentsHelper
         #endregion
 
         #region ctors
-        /*internal, but public for FSharp.Project.dll*/ public TrackDocumentsHelper(ProjectNode project)
+        public TrackDocumentsHelper(ProjectNode project)
         {
             this.projectMgr = project;
         }
@@ -67,7 +67,7 @@ private IVsTrackProjectDocuments2 GetIVsTrackProjectDocuments2()
         /// <param name="files">The files to add.</param>
         /// <param name="flags">The VSQUERYADDFILEFLAGS flags associated to the files added</param>
         /// <returns>true if the file can be added, false if not.</returns>
-        /*internal, but public for FSharp.Project.dll*/ public bool CanAddItems(string[] files, VSQUERYADDFILEFLAGS[] flags)
+        public bool CanAddItems(string[] files, VSQUERYADDFILEFLAGS[] flags)
         {
             // If we are silent then we assume that the file can be added, since we do not want to trigger this event.
             if ((this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerTrackerEvents) != 0)
@@ -94,7 +94,7 @@ private IVsTrackProjectDocuments2 GetIVsTrackProjectDocuments2()
         /// <summary>
         /// Notify the environment about a file just added
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public void OnItemAdded(string file, VSADDFILEFLAGS flag)
+        public void OnItemAdded(string file, VSADDFILEFLAGS flag)
         {
             if ((this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerTrackerEvents) == 0)
             {
@@ -108,7 +108,7 @@ private IVsTrackProjectDocuments2 GetIVsTrackProjectDocuments2()
         /// <param name="files">an array of files to remove</param>
         /// <param name="flags">The VSQUERYREMOVEFILEFLAGS associated to the files to be removed.</param>
         /// <returns>true if the files can be removed, false if not.</returns>
-        /*internal, but public for FSharp.Project.dll*/ public bool CanRemoveItems(string[] files, VSQUERYREMOVEFILEFLAGS[] flags)
+        public bool CanRemoveItems(string[] files, VSQUERYREMOVEFILEFLAGS[] flags)
         {
             // If we are silent then we assume that the file can be removed, since we do not want to trigger this event.
             if ((this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerTrackerEvents) != 0)
@@ -136,7 +136,7 @@ private IVsTrackProjectDocuments2 GetIVsTrackProjectDocuments2()
         /// <summary>
         /// Notify the environment about a file just removed
         /// </summary>
-        /*internal, but public for FSharp.Project.dll*/ public void OnItemRemoved(string file, VSREMOVEFILEFLAGS flag)
+        public void OnItemRemoved(string file, VSREMOVEFILEFLAGS flag)
         {
             if ((this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerTrackerEvents) == 0)
             {
@@ -151,7 +151,7 @@ private IVsTrackProjectDocuments2 GetIVsTrackProjectDocuments2()
         /// <param name="newFileName">Path to the new file.</param>
         /// <param name="flag">The VSRENAMEFILEFLAGS associated with the file to be renamed.</param>
         /// <returns>true if the file can be renamed. Otherwise false.</returns>
-        /*internal, but public for FSharp.Project.dll*/ public bool CanRenameItem(string oldFileName, string newFileName, VSRENAMEFILEFLAGS flag)
+        public bool CanRenameItem(string oldFileName, string newFileName, VSRENAMEFILEFLAGS flag)
         {
             // If we are silent then we assume that the file can be renamed, since we do not want to trigger this event.
             if ((this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerTrackerEvents) != 0)
@@ -168,7 +168,7 @@ private IVsTrackProjectDocuments2 GetIVsTrackProjectDocuments2()
         /// Get's called to tell the env that a file was renamed
         /// </summary>
         /// 
-        /*internal, but public for FSharp.Project.dll*/ public void OnItemRenamed(string strOldName, string strNewName, VSRENAMEFILEFLAGS flag)
+        public void OnItemRenamed(string strOldName, string strNewName, VSRENAMEFILEFLAGS flag)
         {
             if ((this.projectMgr.EventTriggeringFlag & ProjectNode.EventTriggering.DoNotTriggerTrackerEvents) == 0)
             {
diff --git a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Utilities.cs b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Utilities.cs
index f72d32b4886..0d6895b81a8 100644
--- a/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Utilities.cs
+++ b/vsintegration/src/vs/FsPkgs/FSharp.Project/Common.Source.CSharp/Project/Utilities.cs
@@ -114,7 +114,7 @@ public static string GetMsBuildPath(IServiceProvider serviceProvider, string ver
         /// <summary>
         /// Is Visual Studio in design mode.
         /// </summary>
-        /// <param name="serviceProvider">The service provider.</param>
+        /// <param name="site">The service provider.</param>
         /// <returns>true if visual studio is in design mode</returns>
         public static bool IsVisualStudioInDesignMode(IServiceProvider site)
         {
@@ -402,7 +402,7 @@ public static ImageList GetImageList(object imageListAsPointer)
         /// </summary>
         /// <param name="automationObject">The automation object.</param>
         /// <returns>The name of the active configuartion.</returns>        
-        /*internal, but public for FSharp.Project.dll*/ public static string GetActiveConfigurationName(EnvDTE.Project automationObject)
+        public static string GetActiveConfigurationName(EnvDTE.Project automationObject)
         {
             if (automationObject == null)
             {
@@ -470,7 +470,7 @@ public static bool IsSameComObject(object obj1, object obj2)
         /// </summary>
         /// <param name="objToQuery">Managed or COM object.</param>
         /// <returns>Pointer to the IUnknown interface of the object.</returns>
-        /*internal, but public for FSharp.Project.dll*/ public static IntPtr QueryInterfaceIUnknown(object objToQuery)
+        public static IntPtr QueryInterfaceIUnknown(object objToQuery)
         {
             bool releaseIt = false;
             IntPtr unknown = IntPtr.Zero;
@@ -677,10 +677,9 @@ public static string SetStringValueFromConvertedEnum<T>(T enumValue, CultureInfo
         /// <summary>
         /// Initializes the in memory project. Sets BuildEnabled on the project to true.
         /// </summary>
-        /// <param name="engine">The build engine to use to create a build project.</param>
+        /// <param name="buildEngine">The build engine to use to create a build project.</param>
         /// <param name="fullProjectPath">The full path of the project.</param>
         /// <returns>A loaded msbuild project.</returns>
-        /*internal, but public for FSharp.Project.dll*/
         public static Microsoft.Build.Evaluation.Project InitializeMsBuildProject(Microsoft.Build.Evaluation.ProjectCollection buildEngine, string fullProjectPath)
         {
             if (buildEngine == null)
@@ -714,7 +713,6 @@ public static Microsoft.Build.Evaluation.Project InitializeMsBuildProject(Micros
         /// <param name="fullProjectPath">The full path of the project.</param>
         /// <param name="exitingBuildProject">An Existing build project that will be reloaded.</param>
         /// <returns>A loaded msbuild project.</returns>
-        /*internal, but public for FSharp.Project.dll*/
         public static Microsoft.Build.Evaluation.Project ReinitializeMsBuildProject(Microsoft.Build.Evaluation.ProjectCollection buildEngine, string fullProjectPath, Microsoft.Build.Evaluation.Project exitingBuildProject)
         {
             // If we have a build project that has been loaded with another file unload it.
@@ -734,7 +732,6 @@ public static Microsoft.Build.Evaluation.Project ReinitializeMsBuildProject(Micr
             return Utilities.InitializeMsBuildProject(buildEngine, fullProjectPath);
         }
 
-        /*internal, but public for FSharp.Project.dll*/
         public static Microsoft.Build.Evaluation.ProjectCollection InitializeMsBuildEngine(Microsoft.Build.Evaluation.ProjectCollection existingEngine)
         {
             if (existingEngine == null)
@@ -887,7 +884,7 @@ public static void RecursivelyCopyDirectory(string source, string target)
         /// </summary>
         /// <param name="anyFileName">A file name, which can be relative/absolute and contain lower-case/upper-case characters.</param>
         /// <returns>Canonicalized file name.</returns>
-        /*internal, but public for FSharp.Project.dll*/ public static string CanonicalizeFileName(string anyFileName)
+        public static string CanonicalizeFileName(string anyFileName)
         {
             // Get absolute path
             // Note: this will not handle UNC paths
@@ -921,7 +918,7 @@ public static string CanonicalizeFileNameNoThrow(string anyFileName)
         /// </summary>
         /// <param name="fileName">The file to check whether it is a template file</param>
         /// <returns>true if the file is a template file</returns>
-        /*internal, but public for FSharp.Project.dll*/ public static bool IsTemplateFile(string fileName)
+        public static bool IsTemplateFile(string fileName)
         {
             if (String.IsNullOrEmpty(fileName))
             {
@@ -937,10 +934,8 @@ public static string CanonicalizeFileNameNoThrow(string anyFileName)
         /// </summary>
         /// <param name="serviceProvider">A service provider.</param>
         /// <param name="hierarchy">The hierrachy whose configuration is requested.</param>
-        /// <param name="configuration">The name of the active configuration.</param>
-        /// <param name="platform">The name of the platform.</param>
         /// <returns>true if successfull.</returns>
-        /*internal, but public for FSharp.Project.dll*/ public static bool TryGetActiveConfigurationAndPlatform(System.IServiceProvider serviceProvider, IVsHierarchy hierarchy, out ConfigCanonicalName configCanonicalName)
+        public static bool TryGetActiveConfigurationAndPlatform(System.IServiceProvider serviceProvider, IVsHierarchy hierarchy, out ConfigCanonicalName configCanonicalName)
         {
             if (serviceProvider == null)
             {
@@ -980,7 +975,7 @@ public static string CanonicalizeFileNameNoThrow(string anyFileName)
         /// </summary>
         /// <param name="serviceProvider">A reference to a Service Provider.</param>
         /// <returns>true if the shell is in command line mode. false otherwise.</returns>
-        /*internal, but public for FSharp.Project.dll*/ public static bool IsShellInCommandLineMode(System.IServiceProvider serviceProvider)
+        public static bool IsShellInCommandLineMode(System.IServiceProvider serviceProvider)
         {
             if (serviceProvider == null)
             {