diff --git a/_modules/maasng.py b/_modules/maasng.py
index 5189597..3a65267 100644
--- a/_modules/maasng.py
+++ b/_modules/maasng.py
@@ -128,7 +128,7 @@
         return {"error": "Machine not found on MaaS server"}
 
 
-def list_machines():
+def list_machines(status_filter=None):
     """
     Get list of all machines from maas server
 
@@ -137,12 +137,14 @@
     .. code-block:: bash
 
         salt 'maas-node' maasng.list_machines
+        salt 'maas-node' maasng.list_machines status_filter=[Deployed,Ready]
     """
     machines = {}
     maas = _create_maas_client()
     json_res = json.loads(maas.get(u'api/2.0/machines/').read())
     for item in json_res:
-        machines[item["hostname"]] = item
+        if not status_filter or item['status_name'] in status_filter:
+            machines[item["hostname"]] = item
     return machines
 
 
@@ -157,6 +159,56 @@
 
     return False
 
+def delete_machine(hostname):
+    """
+    Delete specified machine
+
+    CLI Example:
+
+    .. code-block:: bash
+
+        salt 'maas-node' maasng.delete_machine server_hostname
+        salt-call maasng.delete_machine server_hostname
+    """
+    result = {}
+    maas = _create_maas_client()
+    system_id = get_machine(hostname)["system_id"]
+    LOG.debug('delete_machine: {}'.format(system_id))
+    maas.delete(
+        u"api/2.0/machines/{0}/".format(system_id)).read()
+
+    result["new"] = "Machine {0} deleted".format(hostname)
+    return result
+
+def action_machine(hostname, action, comment=None):
+    """
+    Send simple action (e.g. mark_broken, mark_fixed) to machine.
+
+    :param action:  Action to send for machine (one of MaaS' op codes)
+    :param comment: Optional comment for the event log.
+
+    CLI Example:
+
+    .. code-block:: bash
+
+        salt 'maas-node' maasng.action_machine server_hostname mark_broken comment='dead'
+    """
+    result = {}
+    data = {}
+    maas = _create_maas_client()
+    system_id = get_machine(hostname)["system_id"]
+    LOG.debug('action_machine: {}'.format(system_id))
+
+    # TODO validation
+    if comment:
+        data["comment"] = comment
+    json_res = json.loads(maas.post(
+        u"api/2.0/machines/{0}/".format(system_id), action, **data).read())
+    LOG.info(json_res)
+    result["new"] = "Machine {0} action {1} executed".format(hostname, action)
+
+    return result
+
 # END MACHINE SECTION
 # RAID SECTION
 
