     commandName += '.cmd' if process.platform is 'win32'
     @apmPath ?= path.resolve(__dirname, '..', 'apm', 'node_modules', 'atom-package-manager', 'bin', commandName)
 
-  # Extended: Get the paths being used to look for packages.
+  # Public: Get the paths being used to look for packages.
   #
   # Returns an {Array} of {String} directory paths.
   getPackageDirPaths: ->
     _.clone(@packageDirPaths)
 
-  getPackageState: (name) ->
-    @packageStates[name]
-
-  setPackageState: (name, state) ->
-    @packageStates[name] = state
-
-  # Extended: Enable the package with the given name.
+  ###
+  Section: General package data
+  ###
+
+  # Public: Resolve the given package name to a path on disk.
+  #
+  # * `name` - The {String} package name.
+  #
+  # Return a {String} folder path or undefined if it could not be resolved.
+  resolvePackagePath: (name) ->
+    return name if fs.isDirectorySync(name)
+
+    packagePath = fs.resolve(@packageDirPaths..., name)
+    return packagePath if fs.isDirectorySync(packagePath)
+
+    packagePath = path.join(@resourcePath, 'node_modules', name)
+    return packagePath if @hasAtomEngine(packagePath)
+
+  # Public: Is the package with the given name bundled with Atom?
+  #
+  # * `name` - The {String} package name.
+  #
+  # Returns a {Boolean}.
+  isBundledPackage: (name) ->
+    @getPackageDependencies().hasOwnProperty(name)
+
+  ###
+  Section: Enabling and disabling packages
+  ###
+
+  # Public: Enable the package with the given name.
   #
   # Returns the {Package} that was enabled or null if it isn't loaded.
   enablePackage: (name) ->

  # Returns a {Boolean}.
  isPackageActive: (name) ->
    @getActivePackage(name)?

  unobserveDisabledPackages: ->
    @disabledPackagesSubscription?.off()

  Section: Event Subscription
  ###

  # Public: Invoke the given callback when all packages have been activated.
  #
  # * `callback` {Function}
  #
