diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -539,11 +539,11 @@
     'DivinerParameterTableView' => 'applications/diviner/view/DivinerParameterTableView.php',
     'DivinerPublishCache' => 'applications/diviner/cache/DivinerPublishCache.php',
     'DivinerPublisher' => 'applications/diviner/publisher/DivinerPublisher.php',
-    'DivinerRemarkupRuleSymbol' => 'applications/diviner/markup/DivinerRemarkupRuleSymbol.php',
     'DivinerRenderer' => 'applications/diviner/renderer/DivinerRenderer.php',
     'DivinerReturnTableView' => 'applications/diviner/view/DivinerReturnTableView.php',
     'DivinerSectionView' => 'applications/diviner/view/DivinerSectionView.php',
     'DivinerStaticPublisher' => 'applications/diviner/publisher/DivinerStaticPublisher.php',
+    'DivinerSymbolRemarkupRule' => 'applications/diviner/markup/DivinerSymbolRemarkupRule.php',
     'DivinerWorkflow' => 'applications/diviner/workflow/DivinerWorkflow.php',
     'DoorkeeperBridge' => 'applications/doorkeeper/bridge/DoorkeeperBridge.php',
     'DoorkeeperBridgeAsana' => 'applications/doorkeeper/bridge/DoorkeeperBridgeAsana.php',
@@ -1467,6 +1467,7 @@
     'PhabricatorEditor' => 'infrastructure/PhabricatorEditor.php',
     'PhabricatorEmailLoginController' => 'applications/auth/controller/PhabricatorEmailLoginController.php',
     'PhabricatorEmailVerificationController' => 'applications/auth/controller/PhabricatorEmailVerificationController.php',
+    'PhabricatorEmbedFileRemarkupRule' => 'applications/files/markup/PhabricatorEmbedFileRemarkupRule.php',
     'PhabricatorEmptyQueryException' => 'infrastructure/query/PhabricatorEmptyQueryException.php',
     'PhabricatorEnglishTranslation' => 'infrastructure/internationalization/translation/PhabricatorEnglishTranslation.php',
     'PhabricatorEnv' => 'infrastructure/env/PhabricatorEnv.php',
@@ -1614,6 +1615,8 @@
     'PhabricatorHunksManagementMigrateWorkflow' => 'applications/differential/management/PhabricatorHunksManagementMigrateWorkflow.php',
     'PhabricatorHunksManagementWorkflow' => 'applications/differential/management/PhabricatorHunksManagementWorkflow.php',
     'PhabricatorIRCProtocolAdapter' => 'infrastructure/daemon/bot/adapter/PhabricatorIRCProtocolAdapter.php',
+    'PhabricatorIconRemarkupRule' => 'applications/macro/markup/PhabricatorIconRemarkupRule.php',
+    'PhabricatorImageMacroRemarkupRule' => 'applications/macro/markup/PhabricatorImageMacroRemarkupRule.php',
     'PhabricatorImageTransformer' => 'applications/files/PhabricatorImageTransformer.php',
     'PhabricatorInfrastructureTestCase' => '__tests__/PhabricatorInfrastructureTestCase.php',
     'PhabricatorInlineCommentController' => 'infrastructure/diff/PhabricatorInlineCommentController.php',
@@ -1704,6 +1707,8 @@
     'PhabricatorMarkupInterface' => 'infrastructure/markup/PhabricatorMarkupInterface.php',
     'PhabricatorMarkupOneOff' => 'infrastructure/markup/PhabricatorMarkupOneOff.php',
     'PhabricatorMarkupPreviewController' => 'infrastructure/markup/PhabricatorMarkupPreviewController.php',
+    'PhabricatorMemeRemarkupRule' => 'applications/macro/markup/PhabricatorMemeRemarkupRule.php',
+    'PhabricatorMentionRemarkupRule' => 'applications/people/markup/PhabricatorMentionRemarkupRule.php',
     'PhabricatorMercurialGraphStream' => 'applications/repository/daemon/PhabricatorMercurialGraphStream.php',
     'PhabricatorMetaMTAActor' => 'applications/metamta/query/PhabricatorMetaMTAActor.php',
     'PhabricatorMetaMTAActorQuery' => 'applications/metamta/query/PhabricatorMetaMTAActorQuery.php',
@@ -1787,6 +1792,7 @@
     'PhabricatorObjectMailReceiver' => 'applications/metamta/receiver/PhabricatorObjectMailReceiver.php',
     'PhabricatorObjectMailReceiverTestCase' => 'applications/metamta/receiver/__tests__/PhabricatorObjectMailReceiverTestCase.php',
     'PhabricatorObjectQuery' => 'applications/phid/query/PhabricatorObjectQuery.php',
+    'PhabricatorObjectRemarkupRule' => 'infrastructure/markup/rule/PhabricatorObjectRemarkupRule.php',
     'PhabricatorObjectSelectorDialog' => 'view/control/PhabricatorObjectSelectorDialog.php',
     'PhabricatorOffsetPagedQuery' => 'infrastructure/query/PhabricatorOffsetPagedQuery.php',
     'PhabricatorOwnerPathQuery' => 'applications/owners/query/PhabricatorOwnerPathQuery.php',
@@ -1977,20 +1983,13 @@
     'PhabricatorRegistrationProfile' => 'applications/people/storage/PhabricatorRegistrationProfile.php',
     'PhabricatorReleephApplication' => 'applications/releeph/application/PhabricatorReleephApplication.php',
     'PhabricatorReleephApplicationConfigOptions' => 'applications/releeph/config/PhabricatorReleephApplicationConfigOptions.php',
-    'PhabricatorRemarkupBlockInterpreterCowsay' => 'infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterCowsay.php',
-    'PhabricatorRemarkupBlockInterpreterFiglet' => 'infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterFiglet.php',
-    'PhabricatorRemarkupBlockInterpreterGraphviz' => 'infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterGraphviz.php',
     'PhabricatorRemarkupControl' => 'view/form/control/PhabricatorRemarkupControl.php',
+    'PhabricatorRemarkupCowsayBlockInterpreter' => 'infrastructure/markup/interpreter/PhabricatorRemarkupCowsayBlockInterpreter.php',
     'PhabricatorRemarkupCustomBlockRule' => 'infrastructure/markup/rule/PhabricatorRemarkupCustomBlockRule.php',
     'PhabricatorRemarkupCustomInlineRule' => 'infrastructure/markup/rule/PhabricatorRemarkupCustomInlineRule.php',
     'PhabricatorRemarkupExample' => 'applications/uiexample/examples/PhabricatorRemarkupExample.php',
-    'PhabricatorRemarkupRuleEmbedFile' => 'applications/files/remarkup/PhabricatorRemarkupRuleEmbedFile.php',
-    'PhabricatorRemarkupRuleIcon' => 'applications/macro/remarkup/PhabricatorRemarkupRuleIcon.php',
-    'PhabricatorRemarkupRuleImageMacro' => 'applications/macro/remarkup/PhabricatorRemarkupRuleImageMacro.php',
-    'PhabricatorRemarkupRuleMeme' => 'applications/macro/remarkup/PhabricatorRemarkupRuleMeme.php',
-    'PhabricatorRemarkupRuleMention' => 'applications/people/remarkup/PhabricatorRemarkupRuleMention.php',
-    'PhabricatorRemarkupRuleObject' => 'infrastructure/markup/rule/PhabricatorRemarkupRuleObject.php',
-    'PhabricatorRemarkupRuleYoutube' => 'infrastructure/markup/rule/PhabricatorRemarkupRuleYoutube.php',
+    'PhabricatorRemarkupFigletBlockInterpreter' => 'infrastructure/markup/interpreter/PhabricatorRemarkupFigletBlockInterpreter.php',
+    'PhabricatorRemarkupGraphvizBlockInterpreter' => 'infrastructure/markup/interpreter/PhabricatorRemarkupGraphvizBlockInterpreter.php',
     'PhabricatorRepositoriesApplication' => 'applications/repository/application/PhabricatorRepositoriesApplication.php',
     'PhabricatorRepository' => 'applications/repository/storage/PhabricatorRepository.php',
     'PhabricatorRepositoryArcanistProject' => 'applications/repository/storage/PhabricatorRepositoryArcanistProject.php',
@@ -2367,6 +2366,7 @@
     'PhabricatorXHProfProfileView' => 'applications/xhprof/view/PhabricatorXHProfProfileView.php',
     'PhabricatorXHProfSample' => 'applications/xhprof/storage/PhabricatorXHProfSample.php',
     'PhabricatorXHProfSampleListController' => 'applications/xhprof/controller/PhabricatorXHProfSampleListController.php',
+    'PhabricatorYoutubeRemarkupRule' => 'infrastructure/markup/rule/PhabricatorYoutubeRemarkupRule.php',
     'PhameBasicBlogSkin' => 'applications/phame/skins/PhameBasicBlogSkin.php',
     'PhameBasicTemplateBlogSkin' => 'applications/phame/skins/PhameBasicTemplateBlogSkin.php',
     'PhameBlog' => 'applications/phame/storage/PhameBlog.php',
@@ -2570,7 +2570,7 @@
     'PhrictionListController' => 'applications/phriction/controller/PhrictionListController.php',
     'PhrictionMoveController' => 'applications/phriction/controller/PhrictionMoveController.php',
     'PhrictionNewController' => 'applications/phriction/controller/PhrictionNewController.php',
-    'PhrictionRemarkupRule' => 'applications/phriction/remarkup/PhrictionRemarkupRule.php',
+    'PhrictionRemarkupRule' => 'applications/phriction/markup/PhrictionRemarkupRule.php',
     'PhrictionSearchEngine' => 'applications/phriction/query/PhrictionSearchEngine.php',
     'PhrictionSearchIndexer' => 'applications/phriction/search/PhrictionSearchIndexer.php',
     'PonderAddAnswerView' => 'applications/ponder/view/PonderAddAnswerView.php',
@@ -3036,7 +3036,7 @@
     'DifferentialProjectsField' => 'DifferentialCoreCustomField',
     'DifferentialQueryConduitAPIMethod' => 'DifferentialConduitAPIMethod',
     'DifferentialQueryDiffsConduitAPIMethod' => 'DifferentialConduitAPIMethod',
-    'DifferentialRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'DifferentialRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'DifferentialReplyHandler' => 'PhabricatorMailReplyHandler',
     'DifferentialRepositoryField' => 'DifferentialCoreCustomField',
     'DifferentialRepositoryLookup' => 'Phobject',
@@ -3112,7 +3112,7 @@
     'DiffusionCommitParentsQueryConduitAPIMethod' => 'DiffusionQueryConduitAPIMethod',
     'DiffusionCommitQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
     'DiffusionCommitRef' => 'Phobject',
-    'DiffusionCommitRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'DiffusionCommitRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'DiffusionCommitTagsController' => 'DiffusionController',
     'DiffusionConduitAPIMethod' => 'ConduitAPIMethod',
     'DiffusionController' => 'PhabricatorController',
@@ -3202,7 +3202,7 @@
     'DiffusionRepositoryListController' => 'DiffusionController',
     'DiffusionRepositoryNewController' => 'DiffusionController',
     'DiffusionRepositoryRef' => 'Phobject',
-    'DiffusionRepositoryRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'DiffusionRepositoryRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'DiffusionResolveRefsConduitAPIMethod' => 'DiffusionQueryConduitAPIMethod',
     'DiffusionResolveUserQuery' => 'Phobject',
     'DiffusionSSHGitReceivePackWorkflow' => 'DiffusionSSHGitWorkflow',
@@ -3266,10 +3266,10 @@
     'DivinerPHPAtomizer' => 'DivinerAtomizer',
     'DivinerParameterTableView' => 'AphrontTagView',
     'DivinerPublishCache' => 'DivinerDiskCache',
-    'DivinerRemarkupRuleSymbol' => 'PhutilRemarkupRule',
     'DivinerReturnTableView' => 'AphrontTagView',
     'DivinerSectionView' => 'AphrontTagView',
     'DivinerStaticPublisher' => 'DivinerPublisher',
+    'DivinerSymbolRemarkupRule' => 'PhutilRemarkupRule',
     'DivinerWorkflow' => 'PhabricatorManagementWorkflow',
     'DoorkeeperBridge' => 'Phobject',
     'DoorkeeperBridgeAsana' => 'DoorkeeperBridge',
@@ -3487,7 +3487,7 @@
     'HarbormasterPublishFragmentBuildStepImplementation' => 'HarbormasterBuildStepImplementation',
     'HarbormasterQueryBuildablesConduitAPIMethod' => 'HarbormasterConduitAPIMethod',
     'HarbormasterQueryBuildsConduitAPIMethod' => 'HarbormasterConduitAPIMethod',
-    'HarbormasterRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'HarbormasterRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'HarbormasterScratchTable' => 'HarbormasterDAO',
     'HarbormasterSendMessageConduitAPIMethod' => 'HarbormasterConduitAPIMethod',
     'HarbormasterSleepBuildStepImplementation' => 'HarbormasterBuildStepImplementation',
@@ -3520,7 +3520,7 @@
     'HeraldPreCommitContentAdapter' => 'HeraldPreCommitAdapter',
     'HeraldPreCommitRefAdapter' => 'HeraldPreCommitAdapter',
     'HeraldRecursiveConditionsException' => 'Exception',
-    'HeraldRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'HeraldRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'HeraldRule' => array(
       'HeraldDAO',
       'PhabricatorFlaggableInterface',
@@ -3579,7 +3579,7 @@
     'LegalpadDocumentListController' => 'LegalpadController',
     'LegalpadDocumentManageController' => 'LegalpadController',
     'LegalpadDocumentQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
-    'LegalpadDocumentRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'LegalpadDocumentRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'LegalpadDocumentSearchEngine' => 'PhabricatorApplicationSearchEngine',
     'LegalpadDocumentSignController' => 'LegalpadController',
     'LegalpadDocumentSignature' => array(
@@ -3646,7 +3646,7 @@
     'ManiphestNameIndexEventListener' => 'PhabricatorEventListener',
     'ManiphestQueryConduitAPIMethod' => 'ManiphestConduitAPIMethod',
     'ManiphestQueryStatusesConduitAPIMethod' => 'ManiphestConduitAPIMethod',
-    'ManiphestRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'ManiphestRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'ManiphestReplyHandler' => 'PhabricatorMailReplyHandler',
     'ManiphestReportController' => 'ManiphestController',
     'ManiphestSearchIndexer' => 'PhabricatorSearchDocumentIndexer',
@@ -3847,7 +3847,7 @@
     'PassphraseCredentialViewController' => 'PassphraseController',
     'PassphraseDAO' => 'PhabricatorLiskDAO',
     'PassphrasePasswordKey' => 'PassphraseAbstractKey',
-    'PassphraseRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'PassphraseRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'PassphraseSSHKey' => 'PassphraseAbstractKey',
     'PassphraseSecret' => 'PassphraseDAO',
     'PasteConduitAPIMethod' => 'ConduitAPIMethod',
@@ -4150,7 +4150,7 @@
     'PhabricatorCountdownEditController' => 'PhabricatorCountdownController',
     'PhabricatorCountdownListController' => 'PhabricatorCountdownController',
     'PhabricatorCountdownQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
-    'PhabricatorCountdownRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'PhabricatorCountdownRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'PhabricatorCountdownSearchEngine' => 'PhabricatorApplicationSearchEngine',
     'PhabricatorCountdownView' => 'AphrontTagView',
     'PhabricatorCountdownViewController' => 'PhabricatorCountdownController',
@@ -4245,7 +4245,7 @@
     'PhabricatorDashboardPanelTypeText' => 'PhabricatorDashboardPanelType',
     'PhabricatorDashboardPanelViewController' => 'PhabricatorDashboardController',
     'PhabricatorDashboardQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
-    'PhabricatorDashboardRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'PhabricatorDashboardRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'PhabricatorDashboardRemovePanelController' => 'PhabricatorDashboardController',
     'PhabricatorDashboardRenderingEngine' => 'Phobject',
     'PhabricatorDashboardSearchEngine' => 'PhabricatorApplicationSearchEngine',
@@ -4283,6 +4283,7 @@
     'PhabricatorEditor' => 'Phobject',
     'PhabricatorEmailLoginController' => 'PhabricatorAuthController',
     'PhabricatorEmailVerificationController' => 'PhabricatorAuthController',
+    'PhabricatorEmbedFileRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'PhabricatorEmptyQueryException' => 'Exception',
     'PhabricatorEnglishTranslation' => 'PhabricatorBaseEnglishTranslation',
     'PhabricatorEnvTestCase' => 'PhabricatorTestCase',
@@ -4435,6 +4436,8 @@
     'PhabricatorHunksManagementMigrateWorkflow' => 'PhabricatorHunksManagementWorkflow',
     'PhabricatorHunksManagementWorkflow' => 'PhabricatorManagementWorkflow',
     'PhabricatorIRCProtocolAdapter' => 'PhabricatorBaseProtocolAdapter',
+    'PhabricatorIconRemarkupRule' => 'PhutilRemarkupRule',
+    'PhabricatorImageMacroRemarkupRule' => 'PhutilRemarkupRule',
     'PhabricatorInfrastructureTestCase' => 'PhabricatorTestCase',
     'PhabricatorInlineCommentController' => 'PhabricatorController',
     'PhabricatorInlineCommentInterface' => 'PhabricatorMarkupInterface',
@@ -4515,6 +4518,8 @@
     'PhabricatorMarkupCache' => 'PhabricatorCacheDAO',
     'PhabricatorMarkupOneOff' => 'PhabricatorMarkupInterface',
     'PhabricatorMarkupPreviewController' => 'PhabricatorController',
+    'PhabricatorMemeRemarkupRule' => 'PhutilRemarkupRule',
+    'PhabricatorMentionRemarkupRule' => 'PhutilRemarkupRule',
     'PhabricatorMercurialGraphStream' => 'PhabricatorRepositoryGraphStream',
     'PhabricatorMetaMTAActorQuery' => 'PhabricatorQuery',
     'PhabricatorMetaMTAApplication' => 'PhabricatorApplication',
@@ -4601,6 +4606,7 @@
     'PhabricatorObjectMailReceiver' => 'PhabricatorMailReceiver',
     'PhabricatorObjectMailReceiverTestCase' => 'PhabricatorTestCase',
     'PhabricatorObjectQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
+    'PhabricatorObjectRemarkupRule' => 'PhutilRemarkupRule',
     'PhabricatorOffsetPagedQuery' => 'PhabricatorQuery',
     'PhabricatorOwnersApplication' => 'PhabricatorApplication',
     'PhabricatorOwnersConfigOptions' => 'PhabricatorApplicationConfigOptions',
@@ -4647,7 +4653,7 @@
     'PhabricatorPasteListController' => 'PhabricatorPasteController',
     'PhabricatorPastePastePHIDType' => 'PhabricatorPHIDType',
     'PhabricatorPasteQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
-    'PhabricatorPasteRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'PhabricatorPasteRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'PhabricatorPasteSearchEngine' => 'PhabricatorApplicationSearchEngine',
     'PhabricatorPasteTestDataGenerator' => 'PhabricatorTestDataGenerator',
     'PhabricatorPasteTransaction' => 'PhabricatorApplicationTransaction',
@@ -4807,20 +4813,13 @@
     'PhabricatorRegistrationProfile' => 'Phobject',
     'PhabricatorReleephApplication' => 'PhabricatorApplication',
     'PhabricatorReleephApplicationConfigOptions' => 'PhabricatorApplicationConfigOptions',
-    'PhabricatorRemarkupBlockInterpreterCowsay' => 'PhutilRemarkupBlockInterpreter',
-    'PhabricatorRemarkupBlockInterpreterFiglet' => 'PhutilRemarkupBlockInterpreter',
-    'PhabricatorRemarkupBlockInterpreterGraphviz' => 'PhutilRemarkupBlockInterpreter',
     'PhabricatorRemarkupControl' => 'AphrontFormTextAreaControl',
-    'PhabricatorRemarkupCustomBlockRule' => 'PhutilRemarkupEngineBlockRule',
+    'PhabricatorRemarkupCowsayBlockInterpreter' => 'PhutilRemarkupBlockInterpreter',
+    'PhabricatorRemarkupCustomBlockRule' => 'PhutilRemarkupBlockRule',
     'PhabricatorRemarkupCustomInlineRule' => 'PhutilRemarkupRule',
     'PhabricatorRemarkupExample' => 'PhabricatorUIExample',
-    'PhabricatorRemarkupRuleEmbedFile' => 'PhabricatorRemarkupRuleObject',
-    'PhabricatorRemarkupRuleIcon' => 'PhutilRemarkupRule',
-    'PhabricatorRemarkupRuleImageMacro' => 'PhutilRemarkupRule',
-    'PhabricatorRemarkupRuleMeme' => 'PhutilRemarkupRule',
-    'PhabricatorRemarkupRuleMention' => 'PhutilRemarkupRule',
-    'PhabricatorRemarkupRuleObject' => 'PhutilRemarkupRule',
-    'PhabricatorRemarkupRuleYoutube' => 'PhutilRemarkupRule',
+    'PhabricatorRemarkupFigletBlockInterpreter' => 'PhutilRemarkupBlockInterpreter',
+    'PhabricatorRemarkupGraphvizBlockInterpreter' => 'PhutilRemarkupBlockInterpreter',
     'PhabricatorRepositoriesApplication' => 'PhabricatorApplication',
     'PhabricatorRepository' => array(
       'PhabricatorRepositoryDAO',
@@ -5225,6 +5224,7 @@
     'PhabricatorXHProfProfileView' => 'AphrontView',
     'PhabricatorXHProfSample' => 'PhabricatorXHProfDAO',
     'PhabricatorXHProfSampleListController' => 'PhabricatorXHProfController',
+    'PhabricatorYoutubeRemarkupRule' => 'PhutilRemarkupRule',
     'PhameBasicBlogSkin' => 'PhameBlogSkin',
     'PhameBasicTemplateBlogSkin' => 'PhameBasicBlogSkin',
     'PhameBlog' => array(
@@ -5320,7 +5320,7 @@
     'PholioMockSearchEngine' => 'PhabricatorApplicationSearchEngine',
     'PholioMockThumbGridView' => 'AphrontView',
     'PholioMockViewController' => 'PholioController',
-    'PholioRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'PholioRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'PholioReplyHandler' => 'PhabricatorMailReplyHandler',
     'PholioSearchIndexer' => 'PhabricatorSearchDocumentIndexer',
     'PholioTransaction' => 'PhabricatorApplicationTransaction',
@@ -5548,7 +5548,7 @@
     'PonderQuestionTransactionComment' => 'PhabricatorApplicationTransactionComment',
     'PonderQuestionTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
     'PonderQuestionViewController' => 'PonderController',
-    'PonderRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'PonderRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'PonderSearchIndexer' => 'PhabricatorSearchDocumentIndexer',
     'PonderTransactionFeedStory' => 'PhabricatorApplicationTransactionFeedStory',
     'PonderVotableView' => 'AphrontView',
@@ -5558,7 +5558,7 @@
     'ProjectConduitAPIMethod' => 'ConduitAPIMethod',
     'ProjectCreateProjectsCapability' => 'PhabricatorPolicyCapability',
     'ProjectQueryConduitAPIMethod' => 'ProjectConduitAPIMethod',
-    'ProjectRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'ProjectRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'QueryFormattingTestCase' => 'PhabricatorTestCase',
     'ReleephAuthorFieldSpecification' => 'ReleephFieldSpecification',
     'ReleephBranch' => array(
@@ -5671,7 +5671,7 @@
     'SlowvoteConduitAPIMethod' => 'ConduitAPIMethod',
     'SlowvoteEmbedView' => 'AphrontView',
     'SlowvoteInfoConduitAPIMethod' => 'SlowvoteConduitAPIMethod',
-    'SlowvoteRemarkupRule' => 'PhabricatorRemarkupRuleObject',
+    'SlowvoteRemarkupRule' => 'PhabricatorObjectRemarkupRule',
     'TokenConduitAPIMethod' => 'ConduitAPIMethod',
     'TokenGiveConduitAPIMethod' => 'TokenConduitAPIMethod',
     'TokenGivenConduitAPIMethod' => 'TokenConduitAPIMethod',
diff --git a/src/applications/countdown/remarkup/PhabricatorCountdownRemarkupRule.php b/src/applications/countdown/remarkup/PhabricatorCountdownRemarkupRule.php
--- a/src/applications/countdown/remarkup/PhabricatorCountdownRemarkupRule.php
+++ b/src/applications/countdown/remarkup/PhabricatorCountdownRemarkupRule.php
@@ -1,7 +1,7 @@
 <?php
 
 final class PhabricatorCountdownRemarkupRule
-  extends PhabricatorRemarkupRuleObject {
+  extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return 'C';
diff --git a/src/applications/dashboard/remarkup/PhabricatorDashboardRemarkupRule.php b/src/applications/dashboard/remarkup/PhabricatorDashboardRemarkupRule.php
--- a/src/applications/dashboard/remarkup/PhabricatorDashboardRemarkupRule.php
+++ b/src/applications/dashboard/remarkup/PhabricatorDashboardRemarkupRule.php
@@ -1,7 +1,7 @@
 <?php
 
 final class PhabricatorDashboardRemarkupRule
-  extends PhabricatorRemarkupRuleObject {
+  extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return 'W';
diff --git a/src/applications/differential/remarkup/DifferentialRemarkupRule.php b/src/applications/differential/remarkup/DifferentialRemarkupRule.php
--- a/src/applications/differential/remarkup/DifferentialRemarkupRule.php
+++ b/src/applications/differential/remarkup/DifferentialRemarkupRule.php
@@ -1,6 +1,6 @@
 <?php
 
-final class DifferentialRemarkupRule extends PhabricatorRemarkupRuleObject {
+final class DifferentialRemarkupRule extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return 'D';
diff --git a/src/applications/diffusion/conduit/DiffusionReadmeQueryConduitAPIMethod.php b/src/applications/diffusion/conduit/DiffusionReadmeQueryConduitAPIMethod.php
--- a/src/applications/diffusion/conduit/DiffusionReadmeQueryConduitAPIMethod.php
+++ b/src/applications/diffusion/conduit/DiffusionReadmeQueryConduitAPIMethod.php
@@ -125,8 +125,7 @@
         ->getOutput($markup_object, $markup_field);
 
       $engine = $markup_object->newMarkupEngine($markup_field);
-      $toc = PhutilRemarkupEngineRemarkupHeaderBlockRule::renderTableOfContents(
-        $engine);
+      $toc = PhutilRemarkupHeaderBlockRule::renderTableOfContents($engine);
       if ($toc) {
         $toc = phutil_tag_div(
           'phabricator-remarkup-toc',
diff --git a/src/applications/diffusion/remarkup/DiffusionCommitRemarkupRule.php b/src/applications/diffusion/remarkup/DiffusionCommitRemarkupRule.php
--- a/src/applications/diffusion/remarkup/DiffusionCommitRemarkupRule.php
+++ b/src/applications/diffusion/remarkup/DiffusionCommitRemarkupRule.php
@@ -1,6 +1,6 @@
 <?php
 
-final class DiffusionCommitRemarkupRule extends PhabricatorRemarkupRuleObject {
+final class DiffusionCommitRemarkupRule extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return '';
diff --git a/src/applications/diffusion/remarkup/DiffusionRepositoryRemarkupRule.php b/src/applications/diffusion/remarkup/DiffusionRepositoryRemarkupRule.php
--- a/src/applications/diffusion/remarkup/DiffusionRepositoryRemarkupRule.php
+++ b/src/applications/diffusion/remarkup/DiffusionRepositoryRemarkupRule.php
@@ -1,7 +1,7 @@
 <?php
 
 final class DiffusionRepositoryRemarkupRule
-  extends PhabricatorRemarkupRuleObject {
+  extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return 'r';
diff --git a/src/applications/diviner/application/PhabricatorDivinerApplication.php b/src/applications/diviner/application/PhabricatorDivinerApplication.php
--- a/src/applications/diviner/application/PhabricatorDivinerApplication.php
+++ b/src/applications/diviner/application/PhabricatorDivinerApplication.php
@@ -45,7 +45,7 @@
 
   public function getRemarkupRules() {
     return array(
-      new DivinerRemarkupRuleSymbol(),
+      new DivinerSymbolRemarkupRule(),
     );
   }
 
diff --git a/src/applications/diviner/controller/DivinerAtomController.php b/src/applications/diviner/controller/DivinerAtomController.php
--- a/src/applications/diviner/controller/DivinerAtomController.php
+++ b/src/applications/diviner/controller/DivinerAtomController.php
@@ -115,7 +115,7 @@
     $toc = $engine->getEngineMetadata(
       $symbol,
       $field,
-      PhutilRemarkupEngineRemarkupHeaderBlockRule::KEY_HEADER_TOC,
+      PhutilRemarkupHeaderBlockRule::KEY_HEADER_TOC,
       array());
 
     $document = id(new PHUIDocumentView())
diff --git a/src/applications/diviner/markup/DivinerRemarkupRuleSymbol.php b/src/applications/diviner/markup/DivinerSymbolRemarkupRule.php
rename from src/applications/diviner/markup/DivinerRemarkupRuleSymbol.php
rename to src/applications/diviner/markup/DivinerSymbolRemarkupRule.php
--- a/src/applications/diviner/markup/DivinerRemarkupRuleSymbol.php
+++ b/src/applications/diviner/markup/DivinerSymbolRemarkupRule.php
@@ -1,6 +1,6 @@
 <?php
 
-final class DivinerRemarkupRuleSymbol extends PhutilRemarkupRule {
+final class DivinerSymbolRemarkupRule extends PhutilRemarkupRule {
 
   const KEY_RULE_ATOM_REF = 'rule.diviner.atomref';
 
diff --git a/src/applications/doorkeeper/remarkup/DoorkeeperRemarkupRule.php b/src/applications/doorkeeper/remarkup/DoorkeeperRemarkupRule.php
--- a/src/applications/doorkeeper/remarkup/DoorkeeperRemarkupRule.php
+++ b/src/applications/doorkeeper/remarkup/DoorkeeperRemarkupRule.php
@@ -1,7 +1,6 @@
 <?php
 
-abstract class DoorkeeperRemarkupRule
-  extends PhutilRemarkupRule {
+abstract class DoorkeeperRemarkupRule extends PhutilRemarkupRule {
 
   const KEY_TAGS = 'doorkeeper.tags';
 
diff --git a/src/applications/files/application/PhabricatorFilesApplication.php b/src/applications/files/application/PhabricatorFilesApplication.php
--- a/src/applications/files/application/PhabricatorFilesApplication.php
+++ b/src/applications/files/application/PhabricatorFilesApplication.php
@@ -36,7 +36,7 @@
 
   public function getRemarkupRules() {
     return array(
-      new PhabricatorRemarkupRuleEmbedFile(),
+      new PhabricatorEmbedFileRemarkupRule(),
     );
   }
 
diff --git a/src/applications/files/remarkup/PhabricatorRemarkupRuleEmbedFile.php b/src/applications/files/markup/PhabricatorEmbedFileRemarkupRule.php
rename from src/applications/files/remarkup/PhabricatorRemarkupRuleEmbedFile.php
rename to src/applications/files/markup/PhabricatorEmbedFileRemarkupRule.php
--- a/src/applications/files/remarkup/PhabricatorRemarkupRuleEmbedFile.php
+++ b/src/applications/files/markup/PhabricatorEmbedFileRemarkupRule.php
@@ -1,7 +1,7 @@
 <?php
 
-final class PhabricatorRemarkupRuleEmbedFile
-  extends PhabricatorRemarkupRuleObject {
+final class PhabricatorEmbedFileRemarkupRule
+  extends PhabricatorObjectRemarkupRule {
 
   const KEY_EMBED_FILE_PHIDS = 'phabricator.embedded-file-phids';
 
diff --git a/src/applications/harbormaster/remarkup/HarbormasterRemarkupRule.php b/src/applications/harbormaster/remarkup/HarbormasterRemarkupRule.php
--- a/src/applications/harbormaster/remarkup/HarbormasterRemarkupRule.php
+++ b/src/applications/harbormaster/remarkup/HarbormasterRemarkupRule.php
@@ -1,7 +1,6 @@
 <?php
 
-final class HarbormasterRemarkupRule
-  extends PhabricatorRemarkupRuleObject {
+final class HarbormasterRemarkupRule extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return 'B';
diff --git a/src/applications/herald/remarkup/HeraldRemarkupRule.php b/src/applications/herald/remarkup/HeraldRemarkupRule.php
--- a/src/applications/herald/remarkup/HeraldRemarkupRule.php
+++ b/src/applications/herald/remarkup/HeraldRemarkupRule.php
@@ -1,7 +1,6 @@
 <?php
 
-final class HeraldRemarkupRule
-  extends PhabricatorRemarkupRuleObject {
+final class HeraldRemarkupRule extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return 'H';
diff --git a/src/applications/legalpad/remarkup/LegalpadDocumentRemarkupRule.php b/src/applications/legalpad/remarkup/LegalpadDocumentRemarkupRule.php
--- a/src/applications/legalpad/remarkup/LegalpadDocumentRemarkupRule.php
+++ b/src/applications/legalpad/remarkup/LegalpadDocumentRemarkupRule.php
@@ -1,7 +1,6 @@
 <?php
 
-final class LegalpadDocumentRemarkupRule
-  extends PhabricatorRemarkupRuleObject {
+final class LegalpadDocumentRemarkupRule extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return 'L';
diff --git a/src/applications/macro/application/PhabricatorMacroApplication.php b/src/applications/macro/application/PhabricatorMacroApplication.php
--- a/src/applications/macro/application/PhabricatorMacroApplication.php
+++ b/src/applications/macro/application/PhabricatorMacroApplication.php
@@ -44,7 +44,7 @@
 
   public function getRemarkupRules() {
     return array(
-      new PhabricatorRemarkupRuleIcon(),
+      new PhabricatorIconRemarkupRule(),
     );
   }
 
diff --git a/src/applications/macro/remarkup/PhabricatorRemarkupRuleIcon.php b/src/applications/macro/markup/PhabricatorIconRemarkupRule.php
rename from src/applications/macro/remarkup/PhabricatorRemarkupRuleIcon.php
rename to src/applications/macro/markup/PhabricatorIconRemarkupRule.php
--- a/src/applications/macro/remarkup/PhabricatorRemarkupRuleIcon.php
+++ b/src/applications/macro/markup/PhabricatorIconRemarkupRule.php
@@ -1,7 +1,6 @@
 <?php
 
-final class PhabricatorRemarkupRuleIcon
-  extends PhutilRemarkupRule {
+final class PhabricatorIconRemarkupRule extends PhutilRemarkupRule {
 
   public function getPriority() {
     return 200.0;
diff --git a/src/applications/macro/remarkup/PhabricatorRemarkupRuleImageMacro.php b/src/applications/macro/markup/PhabricatorImageMacroRemarkupRule.php
rename from src/applications/macro/remarkup/PhabricatorRemarkupRuleImageMacro.php
rename to src/applications/macro/markup/PhabricatorImageMacroRemarkupRule.php
--- a/src/applications/macro/remarkup/PhabricatorRemarkupRuleImageMacro.php
+++ b/src/applications/macro/markup/PhabricatorImageMacroRemarkupRule.php
@@ -1,6 +1,6 @@
 <?php
 
-final class PhabricatorRemarkupRuleImageMacro extends PhutilRemarkupRule {
+final class PhabricatorImageMacroRemarkupRule extends PhutilRemarkupRule {
 
   private $macros;
 
diff --git a/src/applications/macro/remarkup/PhabricatorRemarkupRuleMeme.php b/src/applications/macro/markup/PhabricatorMemeRemarkupRule.php
rename from src/applications/macro/remarkup/PhabricatorRemarkupRuleMeme.php
rename to src/applications/macro/markup/PhabricatorMemeRemarkupRule.php
--- a/src/applications/macro/remarkup/PhabricatorRemarkupRuleMeme.php
+++ b/src/applications/macro/markup/PhabricatorMemeRemarkupRule.php
@@ -1,6 +1,6 @@
 <?php
 
-final class PhabricatorRemarkupRuleMeme extends PhutilRemarkupRule {
+final class PhabricatorMemeRemarkupRule extends PhutilRemarkupRule {
 
   private $images;
 
diff --git a/src/applications/maniphest/remarkup/ManiphestRemarkupRule.php b/src/applications/maniphest/remarkup/ManiphestRemarkupRule.php
--- a/src/applications/maniphest/remarkup/ManiphestRemarkupRule.php
+++ b/src/applications/maniphest/remarkup/ManiphestRemarkupRule.php
@@ -1,6 +1,6 @@
 <?php
 
-final class ManiphestRemarkupRule extends PhabricatorRemarkupRuleObject {
+final class ManiphestRemarkupRule extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return 'T';
diff --git a/src/applications/passphrase/remarkup/PassphraseRemarkupRule.php b/src/applications/passphrase/remarkup/PassphraseRemarkupRule.php
--- a/src/applications/passphrase/remarkup/PassphraseRemarkupRule.php
+++ b/src/applications/passphrase/remarkup/PassphraseRemarkupRule.php
@@ -1,7 +1,6 @@
 <?php
 
-final class PassphraseRemarkupRule
-  extends PhabricatorRemarkupRuleObject {
+final class PassphraseRemarkupRule extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return 'K';
diff --git a/src/applications/paste/remarkup/PhabricatorPasteRemarkupRule.php b/src/applications/paste/remarkup/PhabricatorPasteRemarkupRule.php
--- a/src/applications/paste/remarkup/PhabricatorPasteRemarkupRule.php
+++ b/src/applications/paste/remarkup/PhabricatorPasteRemarkupRule.php
@@ -1,6 +1,6 @@
 <?php
 
-final class PhabricatorPasteRemarkupRule extends PhabricatorRemarkupRuleObject {
+final class PhabricatorPasteRemarkupRule extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return 'P';
diff --git a/src/applications/people/application/PhabricatorPeopleApplication.php b/src/applications/people/application/PhabricatorPeopleApplication.php
--- a/src/applications/people/application/PhabricatorPeopleApplication.php
+++ b/src/applications/people/application/PhabricatorPeopleApplication.php
@@ -72,7 +72,7 @@
 
   public function getRemarkupRules() {
     return array(
-      new PhabricatorRemarkupRuleMention(),
+      new PhabricatorMentionRemarkupRule(),
     );
   }
 
diff --git a/src/applications/people/remarkup/PhabricatorRemarkupRuleMention.php b/src/applications/people/markup/PhabricatorMentionRemarkupRule.php
rename from src/applications/people/remarkup/PhabricatorRemarkupRuleMention.php
rename to src/applications/people/markup/PhabricatorMentionRemarkupRule.php
--- a/src/applications/people/remarkup/PhabricatorRemarkupRuleMention.php
+++ b/src/applications/people/markup/PhabricatorMentionRemarkupRule.php
@@ -1,6 +1,6 @@
 <?php
 
-final class PhabricatorRemarkupRuleMention extends PhutilRemarkupRule {
+final class PhabricatorMentionRemarkupRule extends PhutilRemarkupRule {
 
   const KEY_RULE_MENTION          = 'rule.mention';
   const KEY_RULE_MENTION_ORIGINAL = 'rule.mention.original';
diff --git a/src/applications/pholio/remarkup/PholioRemarkupRule.php b/src/applications/pholio/remarkup/PholioRemarkupRule.php
--- a/src/applications/pholio/remarkup/PholioRemarkupRule.php
+++ b/src/applications/pholio/remarkup/PholioRemarkupRule.php
@@ -1,7 +1,6 @@
 <?php
 
-final class PholioRemarkupRule
-  extends PhabricatorRemarkupRuleObject {
+final class PholioRemarkupRule extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return 'M';
diff --git a/src/applications/phriction/remarkup/PhrictionRemarkupRule.php b/src/applications/phriction/markup/PhrictionRemarkupRule.php
rename from src/applications/phriction/remarkup/PhrictionRemarkupRule.php
rename to src/applications/phriction/markup/PhrictionRemarkupRule.php
diff --git a/src/applications/phriction/storage/PhrictionContent.php b/src/applications/phriction/storage/PhrictionContent.php
--- a/src/applications/phriction/storage/PhrictionContent.php
+++ b/src/applications/phriction/storage/PhrictionContent.php
@@ -69,7 +69,7 @@
     $output,
     PhutilMarkupEngine $engine) {
 
-    $toc = PhutilRemarkupEngineRemarkupHeaderBlockRule::renderTableOfContents(
+    $toc = PhutilRemarkupHeaderBlockRule::renderTableOfContents(
       $engine);
 
     if ($toc) {
diff --git a/src/applications/ponder/remarkup/PonderRemarkupRule.php b/src/applications/ponder/remarkup/PonderRemarkupRule.php
--- a/src/applications/ponder/remarkup/PonderRemarkupRule.php
+++ b/src/applications/ponder/remarkup/PonderRemarkupRule.php
@@ -1,7 +1,6 @@
 <?php
 
-final class PonderRemarkupRule
-  extends PhabricatorRemarkupRuleObject {
+final class PonderRemarkupRule extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return 'Q';
diff --git a/src/applications/project/remarkup/ProjectRemarkupRule.php b/src/applications/project/remarkup/ProjectRemarkupRule.php
--- a/src/applications/project/remarkup/ProjectRemarkupRule.php
+++ b/src/applications/project/remarkup/ProjectRemarkupRule.php
@@ -1,7 +1,6 @@
 <?php
 
-final class ProjectRemarkupRule
-  extends PhabricatorRemarkupRuleObject {
+final class ProjectRemarkupRule extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return '#';
diff --git a/src/applications/slowvote/remarkup/SlowvoteRemarkupRule.php b/src/applications/slowvote/remarkup/SlowvoteRemarkupRule.php
--- a/src/applications/slowvote/remarkup/SlowvoteRemarkupRule.php
+++ b/src/applications/slowvote/remarkup/SlowvoteRemarkupRule.php
@@ -1,6 +1,6 @@
 <?php
 
-final class SlowvoteRemarkupRule extends PhabricatorRemarkupRuleObject {
+final class SlowvoteRemarkupRule extends PhabricatorObjectRemarkupRule {
 
   protected function getObjectNamePrefix() {
     return 'V';
diff --git a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
--- a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
+++ b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
@@ -1140,7 +1140,7 @@
         foreach ($xaction_blocks as $block) {
           $engine->markupText($block);
           $phids += $engine->getTextMetadata(
-            PhabricatorRemarkupRuleObject::KEY_MENTIONED_OBJECTS,
+            PhabricatorObjectRemarkupRule::KEY_MENTIONED_OBJECTS,
             array());
         }
       }
diff --git a/src/infrastructure/markup/PhabricatorMarkupEngine.php b/src/infrastructure/markup/PhabricatorMarkupEngine.php
--- a/src/infrastructure/markup/PhabricatorMarkupEngine.php
+++ b/src/infrastructure/markup/PhabricatorMarkupEngine.php
@@ -440,14 +440,14 @@
       $options['syntax-highlighter.engine']);
 
     $rules = array();
-    $rules[] = new PhutilRemarkupRuleEscapeRemarkup();
-    $rules[] = new PhutilRemarkupRuleMonospace();
+    $rules[] = new PhutilRemarkupEscapeRemarkupRule();
+    $rules[] = new PhutilRemarkupMonospaceRule();
 
 
-    $rules[] = new PhutilRemarkupRuleDocumentLink();
+    $rules[] = new PhutilRemarkupDocumentLinkRule();
 
     if ($options['youtube']) {
-      $rules[] = new PhabricatorRemarkupRuleYoutube();
+      $rules[] = new PhabricatorYoutubeRemarkupRule();
     }
 
     $applications = PhabricatorApplication::getAllInstalledApplications();
@@ -457,35 +457,35 @@
       }
     }
 
-    $rules[] = new PhutilRemarkupRuleHyperlink();
+    $rules[] = new PhutilRemarkupHyperlinkRule();
 
     if ($options['macros']) {
-      $rules[] = new PhabricatorRemarkupRuleImageMacro();
-      $rules[] = new PhabricatorRemarkupRuleMeme();
+      $rules[] = new PhabricatorImageMacroRemarkupRule();
+      $rules[] = new PhabricatorMemeRemarkupRule();
     }
 
-    $rules[] = new PhutilRemarkupRuleBold();
-    $rules[] = new PhutilRemarkupRuleItalic();
-    $rules[] = new PhutilRemarkupRuleDel();
-    $rules[] = new PhutilRemarkupRuleUnderline();
+    $rules[] = new PhutilRemarkupBoldRule();
+    $rules[] = new PhutilRemarkupItalicRule();
+    $rules[] = new PhutilRemarkupDelRule();
+    $rules[] = new PhutilRemarkupUnderlineRule();
 
     foreach (self::loadCustomInlineRules() as $rule) {
       $rules[] = $rule;
     }
 
     $blocks = array();
-    $blocks[] = new PhutilRemarkupEngineRemarkupQuotesBlockRule();
-    $blocks[] = new PhutilRemarkupEngineRemarkupReplyBlockRule();
-    $blocks[] = new PhutilRemarkupEngineRemarkupLiteralBlockRule();
-    $blocks[] = new PhutilRemarkupEngineRemarkupHeaderBlockRule();
-    $blocks[] = new PhutilRemarkupEngineRemarkupHorizontalRuleBlockRule();
-    $blocks[] = new PhutilRemarkupEngineRemarkupListBlockRule();
-    $blocks[] = new PhutilRemarkupEngineRemarkupCodeBlockRule();
-    $blocks[] = new PhutilRemarkupEngineRemarkupNoteBlockRule();
-    $blocks[] = new PhutilRemarkupEngineRemarkupTableBlockRule();
-    $blocks[] = new PhutilRemarkupEngineRemarkupSimpleTableBlockRule();
-    $blocks[] = new PhutilRemarkupEngineRemarkupInterpreterRule();
-    $blocks[] = new PhutilRemarkupEngineRemarkupDefaultBlockRule();
+    $blocks[] = new PhutilRemarkupQuotesBlockRule();
+    $blocks[] = new PhutilRemarkupReplyBlockRule();
+    $blocks[] = new PhutilRemarkupLiteralBlockRule();
+    $blocks[] = new PhutilRemarkupHeaderBlockRule();
+    $blocks[] = new PhutilRemarkupHorizontalRuleBlockRule();
+    $blocks[] = new PhutilRemarkupListBlockRule();
+    $blocks[] = new PhutilRemarkupCodeBlockRule();
+    $blocks[] = new PhutilRemarkupNoteBlockRule();
+    $blocks[] = new PhutilRemarkupTableBlockRule();
+    $blocks[] = new PhutilRemarkupSimpleTableBlockRule();
+    $blocks[] = new PhutilRemarkupInterpreterBlockRule();
+    $blocks[] = new PhutilRemarkupDefaultBlockRule();
 
     foreach (self::loadCustomBlockRules() as $rule) {
       $blocks[] = $rule;
@@ -512,7 +512,7 @@
     foreach ($content_blocks as $content_block) {
       $engine->markupText($content_block);
       $phids = $engine->getTextMetadata(
-        PhabricatorRemarkupRuleMention::KEY_MENTIONED,
+        PhabricatorMentionRemarkupRule::KEY_MENTIONED,
         array());
       $mentions += $phids;
     }
@@ -531,7 +531,7 @@
     foreach ($content_blocks as $content_block) {
       $engine->markupText($content_block);
       $ids = $engine->getTextMetadata(
-        PhabricatorRemarkupRuleEmbedFile::KEY_EMBED_FILE_PHIDS,
+        PhabricatorEmbedFileRemarkupRule::KEY_EMBED_FILE_PHIDS,
         array());
       $files += $ids;
     }
diff --git a/src/infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterCowsay.php b/src/infrastructure/markup/interpreter/PhabricatorRemarkupCowsayBlockInterpreter.php
rename from src/infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterCowsay.php
rename to src/infrastructure/markup/interpreter/PhabricatorRemarkupCowsayBlockInterpreter.php
--- a/src/infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterCowsay.php
+++ b/src/infrastructure/markup/interpreter/PhabricatorRemarkupCowsayBlockInterpreter.php
@@ -1,6 +1,6 @@
 <?php
 
-final class PhabricatorRemarkupBlockInterpreterCowsay
+final class PhabricatorRemarkupCowsayBlockInterpreter
   extends PhutilRemarkupBlockInterpreter {
 
   public function getInterpreterName() {
diff --git a/src/infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterFiglet.php b/src/infrastructure/markup/interpreter/PhabricatorRemarkupFigletBlockInterpreter.php
rename from src/infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterFiglet.php
rename to src/infrastructure/markup/interpreter/PhabricatorRemarkupFigletBlockInterpreter.php
--- a/src/infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterFiglet.php
+++ b/src/infrastructure/markup/interpreter/PhabricatorRemarkupFigletBlockInterpreter.php
@@ -1,6 +1,6 @@
 <?php
 
-final class PhabricatorRemarkupBlockInterpreterFiglet
+final class PhabricatorRemarkupFigletBlockInterpreter
   extends PhutilRemarkupBlockInterpreter {
 
   public function getInterpreterName() {
diff --git a/src/infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterGraphviz.php b/src/infrastructure/markup/interpreter/PhabricatorRemarkupGraphvizBlockInterpreter.php
rename from src/infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterGraphviz.php
rename to src/infrastructure/markup/interpreter/PhabricatorRemarkupGraphvizBlockInterpreter.php
--- a/src/infrastructure/markup/interpreter/PhabricatorRemarkupBlockInterpreterGraphviz.php
+++ b/src/infrastructure/markup/interpreter/PhabricatorRemarkupGraphvizBlockInterpreter.php
@@ -1,6 +1,6 @@
 <?php
 
-final class PhabricatorRemarkupBlockInterpreterGraphviz
+final class PhabricatorRemarkupGraphvizBlockInterpreter
   extends PhutilRemarkupBlockInterpreter {
 
   public function getInterpreterName() {
@@ -47,7 +47,7 @@
       ));
   }
 
-  // TODO: This is duplicated from PhabricatorRemarkupRuleEmbedFile since they
+  // TODO: This is duplicated from PhabricatorEmbedFileRemarkupRule since they
   // do not share a base class.
   private function parseDimension($string) {
     $string = trim($string);
diff --git a/src/infrastructure/markup/rule/PhabricatorRemarkupRuleObject.php b/src/infrastructure/markup/rule/PhabricatorObjectRemarkupRule.php
rename from src/infrastructure/markup/rule/PhabricatorRemarkupRuleObject.php
rename to src/infrastructure/markup/rule/PhabricatorObjectRemarkupRule.php
--- a/src/infrastructure/markup/rule/PhabricatorRemarkupRuleObject.php
+++ b/src/infrastructure/markup/rule/PhabricatorObjectRemarkupRule.php
@@ -1,7 +1,6 @@
 <?php
 
-abstract class PhabricatorRemarkupRuleObject
-  extends PhutilRemarkupRule {
+abstract class PhabricatorObjectRemarkupRule extends PhutilRemarkupRule {
 
   const KEY_RULE_OBJECT = 'rule.object';
   const KEY_MENTIONED_OBJECTS = 'rule.object.mentioned';
diff --git a/src/infrastructure/markup/rule/PhabricatorRemarkupCustomBlockRule.php b/src/infrastructure/markup/rule/PhabricatorRemarkupCustomBlockRule.php
--- a/src/infrastructure/markup/rule/PhabricatorRemarkupCustomBlockRule.php
+++ b/src/infrastructure/markup/rule/PhabricatorRemarkupCustomBlockRule.php
@@ -1,7 +1,7 @@
 <?php
 
 abstract class PhabricatorRemarkupCustomBlockRule
-  extends PhutilRemarkupEngineBlockRule {
+  extends PhutilRemarkupBlockRule {
 
   public function getRuleVersion() {
     return 1;
diff --git a/src/infrastructure/markup/rule/PhabricatorRemarkupCustomInlineRule.php b/src/infrastructure/markup/rule/PhabricatorRemarkupCustomInlineRule.php
--- a/src/infrastructure/markup/rule/PhabricatorRemarkupCustomInlineRule.php
+++ b/src/infrastructure/markup/rule/PhabricatorRemarkupCustomInlineRule.php
@@ -1,7 +1,6 @@
 <?php
 
-abstract class PhabricatorRemarkupCustomInlineRule
-  extends PhutilRemarkupRule {
+abstract class PhabricatorRemarkupCustomInlineRule extends PhutilRemarkupRule {
 
   public function getRuleVersion() {
     return 1;
diff --git a/src/infrastructure/markup/rule/PhabricatorRemarkupRuleYoutube.php b/src/infrastructure/markup/rule/PhabricatorYoutubeRemarkupRule.php
rename from src/infrastructure/markup/rule/PhabricatorRemarkupRuleYoutube.php
rename to src/infrastructure/markup/rule/PhabricatorYoutubeRemarkupRule.php
--- a/src/infrastructure/markup/rule/PhabricatorRemarkupRuleYoutube.php
+++ b/src/infrastructure/markup/rule/PhabricatorYoutubeRemarkupRule.php
@@ -1,6 +1,6 @@
 <?php
 
-final class PhabricatorRemarkupRuleYoutube extends PhutilRemarkupRule {
+final class PhabricatorYoutubeRemarkupRule extends PhutilRemarkupRule {
 
   public function getPriority() {
     return 350.0;