diff --git a/features/notify.py b/features/notify.py
index c285c76..425041e 100644
--- a/features/notify.py
+++ b/features/notify.py
@@ -219,6 +219,12 @@
 
     return email_tasks
 
+  # def GetNotifyIssueChangeTask(self, **kwargs):
+  #   return self.handler(**kwargs)
+
+  # def PostNotifyIssueChangeTask(self, **kwargs):
+  #   return self.handler(**kwargs)
+
 
 class NotifyBlockingChangeTask(notify_helpers.NotifyTaskBase):
   """JSON servlet that notifies appropriate users after a blocking change."""
@@ -350,6 +356,12 @@
 
     return one_issue_email_tasks
 
+  # def GetNotifyBlockingChangeTask(self, **kwargs):
+  #   return self.handler(**kwargs)
+
+  # def PostNotifyBlockingChangeTask(self, **kwargs):
+  #   return self.handler(**kwargs)
+
 
 class NotifyBulkChangeTask(notify_helpers.NotifyTaskBase):
   """JSON servlet that notifies appropriate users after a bulk edit."""
@@ -712,6 +724,12 @@
 
     return subject, body
 
+  # def GetNotifyBulkChangeTask(self, **kwargs):
+  #   return self.handler(**kwargs)
+
+  # def PostNotifyBulkChangeTask(self, **kwargs):
+  #   return self.handler(**kwargs)
+
 
 # For now, this class will not be used to send approval comment notifications
 # TODO(jojwang): monorail:3588, it might make sense for this class to handle
@@ -901,6 +919,12 @@
 
     return list(set(recipient_ids))
 
+  # def GetNotifyApprovalChangeTask(self, **kwargs):
+  #   return self.handler(**kwargs)
+
+  # def PostNotifyApprovalChangeTask(self, **kwargs):
+  #   return self.handler(**kwargs)
+
 
 class NotifyRulesDeletedTask(notify_helpers.NotifyTaskBase):
   """JSON servlet that sends one email."""
@@ -967,7 +991,14 @@
 
     return email_tasks
 
+  # def GetNotifyRulesDeletedTask(self, **kwargs):
+  #   return self.handler(**kwargs)
 
+  # def PostNotifyRulesDeletedTask(self, **kwargs):
+  #   return self.handler(**kwargs)
+
+
+# TODO: change to FlaskInternalTask when convert to flask
 class OutboundEmailTask(jsonfeed.InternalTask):
   """JSON servlet that sends one email.
 
@@ -1053,3 +1084,9 @@
     return dict(
         sender=sender, to=to, subject=subject, body=body, html_body=html_body,
         reply_to=reply_to, references=references)
+
+  # def GetOutboundEmailTask(self, **kwargs):
+  #   return self.handler(**kwargs)
+
+  # def PostOutboundEmailTask(self, **kwargs):
+  #   return self.handler(**kwargs)
