diff --git a/sievelib/commands.py b/sievelib/commands.py
index 5a9bf2f..acb4535 100644
--- a/sievelib/commands.py
+++ b/sievelib/commands.py
@@ -550,10 +550,6 @@ class RequireCommand(ControlCommand):
                 RequireCommand.loaded_extensions += [ext]
 
 
-class StopCommand(ControlCommand):
-    args_definition = []
-
-
 class IfCommand(ControlCommand):
     accept_children = True
 
@@ -614,6 +610,10 @@ class ActionCommand(Command):
         return (self.name, ) + tuple(args)
 
 
+class StopCommand(ActionCommand):
+    args_definition = []
+
+
 class FileintoCommand(ActionCommand):
     extension = "fileinto"
     args_definition = [

diff --git a/sievelib/tests/test_factory.py b/sievelib/tests/test_factory.py
index 1da42aa..f425363 100644
--- a/sievelib/tests/test_factory.py
+++ b/sievelib/tests/test_factory.py
@@ -111,6 +111,14 @@ class FactoryTestCase(unittest.TestCase):
         self.assertIn(":copy", actions[0])
         self.assertIn("Toto", actions[0])
 
+        self.fs.addfilter(
+            "ruleY",
+            [("Subject", ":contains", "aaa")],
+            [("stop",)]
+        )
+        actions = self.fs.get_filter_actions("ruleY")
+        self.assertIn("stop", actions[0])
+
     def test_add_header_filter(self):
         output = six.StringIO()
         self.fs.addfilter(
diff --git a/sievelib/tests/test_parser.py b/sievelib/tests/test_parser.py
index d5fa697..8890eac 100644
--- a/sievelib/tests/test_parser.py
+++ b/sievelib/tests/test_parser.py
@@ -189,7 +189,7 @@ noreply
 Your email has been canceled
 ============================
 .
-    stop (type: control)
+    stop (type: action)
 else (type: control)
     reject (type: action)
         text:
@@ -399,7 +399,7 @@ if (type: control)
             not (type: test)
                 not (type: test)
                     true (type: test)
-    stop (type: control)
+    stop (type: action)
 """)
 
     def test_just_one_command(self):

stop action is wrongly implemented
It is currently declared as a control command.
sievelib/tests/test_factory.py::FactoryTestCase::test_get_filter_actions sievelib/tests/test_parser.py::ValidSyntaxes::test_multiline_string sievelib/tests/test_parser.py::ValidSyntaxes::test_multiple_not
sievelib/tests/test_factory.py::FactoryTestCase::test_add_body_filter sievelib/tests/test_factory.py::FactoryTestCase::test_add_currentdate_filter sievelib/tests/test_factory.py::FactoryTestCase::test_add_envelope_filter sievelib/tests/test_factory.py::FactoryTestCase::test_add_exists_filter sievelib/tests/test_factory.py::FactoryTestCase::test_add_exists_filter_with_not sievelib/tests/test_factory.py::FactoryTestCase::test_add_filter_unicode sievelib/tests/test_factory.py::FactoryTestCase::test_add_header_filter sievelib/tests/test_factory.py::FactoryTestCase::test_add_header_filter_with_not sievelib/tests/test_factory.py::FactoryTestCase::test_add_notbody_filter sievelib/tests/test_factory.py::FactoryTestCase::test_add_notenvelope_filter sievelib/tests/test_factory.py::FactoryTestCase::test_add_size_filter sievelib/tests/test_factory.py::FactoryTestCase::test_disablefilter sievelib/tests/test_factory.py::FactoryTestCase::test_get_filter_conditions sievelib/tests/test_factory.py::FactoryTestCase::test_get_filter_matchtype sievelib/tests/test_factory.py::FactoryTestCase::test_remove_filter sievelib/tests/test_factory.py::FactoryTestCase::test_use_action_with_tag sievelib/tests/test_parser.py::AdditionalCommands::test_add_command sievelib/tests/test_parser.py::AdditionalCommands::test_quota_notification sievelib/tests/test_parser.py::ValidEncodings::test_utf8_file sievelib/tests/test_parser.py::ValidSyntaxes::test_body_extension sievelib/tests/test_parser.py::ValidSyntaxes::test_bracket_comment sievelib/tests/test_parser.py::ValidSyntaxes::test_complex_allof_with_not sievelib/tests/test_parser.py::ValidSyntaxes::test_explicit_comparator sievelib/tests/test_parser.py::ValidSyntaxes::test_fileinto_create sievelib/tests/test_parser.py::ValidSyntaxes::test_hash_comment sievelib/tests/test_parser.py::ValidSyntaxes::test_imap4flags_extension sievelib/tests/test_parser.py::ValidSyntaxes::test_imap4flags_hasflag sievelib/tests/test_parser.py::ValidSyntaxes::test_just_one_command sievelib/tests/test_parser.py::ValidSyntaxes::test_nested_blocks sievelib/tests/test_parser.py::ValidSyntaxes::test_non_ordered_args sievelib/tests/test_parser.py::ValidSyntaxes::test_reject_extension sievelib/tests/test_parser.py::ValidSyntaxes::test_rfc5228_extended sievelib/tests/test_parser.py::ValidSyntaxes::test_singletest_testlist sievelib/tests/test_parser.py::ValidSyntaxes::test_string_with_bracket_comment sievelib/tests/test_parser.py::ValidSyntaxes::test_true_test sievelib/tests/test_parser.py::ValidSyntaxes::test_truefalse_testlist sievelib/tests/test_parser.py::ValidSyntaxes::test_vacationext_basic sievelib/tests/test_parser.py::ValidSyntaxes::test_vacationext_medium sievelib/tests/test_parser.py::ValidSyntaxes::test_vacationext_with_limit sievelib/tests/test_parser.py::ValidSyntaxes::test_vacationext_with_multiline sievelib/tests/test_parser.py::ValidSyntaxes::test_vacationext_with_single_mail_address sievelib/tests/test_parser.py::InvalidSyntaxes::test_comma_inside_arguments sievelib/tests/test_parser.py::InvalidSyntaxes::test_empty_not sievelib/tests/test_parser.py::InvalidSyntaxes::test_empty_string_list sievelib/tests/test_parser.py::InvalidSyntaxes::test_extra_arg sievelib/tests/test_parser.py::InvalidSyntaxes::test_misplaced_comma_in_string_list sievelib/tests/test_parser.py::InvalidSyntaxes::test_misplaced_comma_in_tests_list sievelib/tests/test_parser.py::InvalidSyntaxes::test_misplaced_parenthesis sievelib/tests/test_parser.py::InvalidSyntaxes::test_missing_semicolon sievelib/tests/test_parser.py::InvalidSyntaxes::test_missing_semicolon_in_block sievelib/tests/test_parser.py::InvalidSyntaxes::test_nested_comments sievelib/tests/test_parser.py::InvalidSyntaxes::test_non_ordered_args sievelib/tests/test_parser.py::InvalidSyntaxes::test_nonclosed_block sievelib/tests/test_parser.py::InvalidSyntaxes::test_nonclosed_tests_list sievelib/tests/test_parser.py::InvalidSyntaxes::test_nonclosed_tests_list2 sievelib/tests/test_parser.py::InvalidSyntaxes::test_nonopened_block sievelib/tests/test_parser.py::InvalidSyntaxes::test_nonopened_tests_list sievelib/tests/test_parser.py::InvalidSyntaxes::test_unclosed_string_list sievelib/tests/test_parser.py::InvalidSyntaxes::test_unknown_token sievelib/tests/test_parser.py::LanguageRestrictions::test_bad_arg_value sievelib/tests/test_parser.py::LanguageRestrictions::test_bad_arg_value2 sievelib/tests/test_parser.py::LanguageRestrictions::test_bad_comparator_value sievelib/tests/test_parser.py::LanguageRestrictions::test_exists_get_string_or_list sievelib/tests/test_parser.py::LanguageRestrictions::test_fileinto_create_without_fileinto sievelib/tests/test_parser.py::LanguageRestrictions::test_fileinto_create_without_mailbox sievelib/tests/test_parser.py::LanguageRestrictions::test_misplaced_elsif sievelib/tests/test_parser.py::LanguageRestrictions::test_misplaced_elsif2 sievelib/tests/test_parser.py::LanguageRestrictions::test_misplaced_nested_elsif sievelib/tests/test_parser.py::LanguageRestrictions::test_not_included_extension sievelib/tests/test_parser.py::LanguageRestrictions::test_test_outside_control sievelib/tests/test_parser.py::LanguageRestrictions::test_unexpected_argument sievelib/tests/test_parser.py::LanguageRestrictions::test_unknown_control sievelib/tests/test_parser.py::DateCommands::test_currentdate_command sievelib/tests/test_parser.py::DateCommands::test_currentdate_command_timezone sievelib/tests/test_parser.py::DateCommands::test_currentdate_extension_not_loaded sievelib/tests/test_parser.py::DateCommands::test_currentdate_norel sievelib/tests/test_parser.py::DateCommands::test_date_command sievelib/tests/test_parser.py::VariablesCommands::test_set_command sievelib/tests/test_parser.py::CopyWithoutSideEffectsTestCase::test_fileinto_with_copy sievelib/tests/test_parser.py::CopyWithoutSideEffectsTestCase::test_redirect_with_copy