# 3.3.1. Master Organization

Buildbot makes heavy use of Twisted Python’s support for services - software modules that can be started and stopped dynamically. Buildbot adds the ability to reconfigure such services, too - see Reconfiguration. Twisted arranges services into trees; the following section describes the service tree on a running master.

## 3.3.1.1. BuildMaster Object

The hierarchy begins with the master, a `buildbot.master.BuildMaster` instance. Most other services contain a reference to this object in their `master` attribute, and in general the appropriate way to access other objects or services is to begin with `self.master` and navigate from there.

The master has a number of useful attributes:

`master.metrics`

  A `buildbot.process.metrics.MetricLogObserver` instance that handles tracking and reporting on master metrics.

`master.caches`

  A `buildbot.process.caches.CacheManager` instance that provides access to object caches.

`master.pbmanager`

  A `buildbot.pbmanager.PBManager` instance that handles incoming PB connections, potentially on multiple ports, and dispatching those connections to appropriate components based on the supplied username.

`master.workers`

  A `buildbot.worker.manager.WorkerManager` instance that provides wrappers around multiple master-worker protocols (e.g. PB) to unify calls for them from higher level code.

`master.change_svc`

  A `buildbot.changes.manager.ChangeManager` instance that manages the active change sources, as well as the stream of changes received from those sources. All active change sources are child services of this instance.

`master.botmaster`

  A `buildbot.process.botmaster.BotMaster` instance that manages all of the workers and builders as child services.

  The botmaster acts as the parent service for a `buildbot.process.botmaster.BuildRequestDistributor` instance (at `master.botmaster.brd`), as well as all active workers (`buildbot.worker.AbstractWorker` instances) and builders (`buildbot.process.builder.Builder` instances).

`master.scheduler_manager`

  A `buildbot.schedulers.manager.SchedulerManager` instance that manages the active schedulers. All active schedulers are child services of this instance.

`master.user_manager`

  A `buildbot.process.users.manager.UserManagerManager` instance that manages access to users. All active user managers are child services of this instance.

`master.db`

  A `buildbot.db.connector.DBConnector` instance that manages access to the buildbot database. See Database for more information.

`master.debug`

  A `buildbot.process.debug.DebugServices` instance that manages debugging-related access – the manhole, in particular.

`master.masterid`

  This is the ID for this master, from the `masters` table. It is used in the database and messages to uniquely identify this master.