def announceGenerate(self):
        DistributedObjectAI.announceGenerate(self)
        self.interiorZone = self.air.allocateZone()

        self.door = DistributedHouseDoorAI(self.air,
                                           self.doId,
                                           DoorTypes.EXT_STANDARD,
                                           swing=3)
        self.door.generateWithRequired(self.zoneId)

        self.interior = DistributedHouseInteriorAI(self.air, self)
        self.interior.setHouseIndex(self.housePos)
        self.interior.setHouseId(self.getDoId())
        self.interior.generateWithRequired(self.interiorZone)

        self.interiorDoor = DistributedHouseDoorAI(self.air,
                                                   self.interior.doId,
                                                   DoorTypes.INT_STANDARD,
                                                   swing=3)
        self.interiorDoor.generateWithRequired(self.interiorZone)

        self.door.setOtherDoor(self.interiorDoor)
        self.interiorDoor.setOtherDoor(self.door)
        self.door.zoneId = self.zoneId
        self.interiorDoor.zoneId = self.interiorZone

        if not self.isInteriorInitialized:
            self.notify.info('Initializing interior...')
            self.interior.initialize()
            self.b_setInteriorInitialized(1)

        self.mailbox = DistributedMailboxAI(self.air, self)
        self.mailbox.generateWithRequired(self.zoneId)

        self.sendUpdate('setHouseReady', [])