diff --git a/premium.rules.inc b/premium.rules.inc
new file mode 100644
index 0000000..32f0e7f
--- /dev/null
+++ b/premium.rules.inc
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * Implements of hook_rules_condition_info().
+ */
+function premium_rules_condition_info() {
+  return array(
+    // @todo Make me configurable (allow choosing the Premium level).
+    'node_is_premium' => array(
+      'label' => t('Node is premium'),
+      'base' => 'rules_condition_node_is_premium',
+      'parameter' => array(
+        'node' => array('type' => 'node', 'label' => t('Content')),
+      ),
+      'group' => t('Node'),
+      'access callback' => 'rules_node_integration_access',
+    ),
+  );
+}
+
+/**
+ * Check whether content is premium or not.
+ */
+function rules_condition_node_is_premium($node) {
+  return $node->premium;
+}
+
+/**
+ * Implements hook_rules_action_info().
+ */
+function premium_rules_action_info() {
+  return array(
+    'premium_set_content_premium' => array(
+      'label' => t('Make the node Premium content'),
+      'parameter' => array(
+        'node' => array(
+          'type' => 'node',
+          'label' => t('Content'),
+          'save' => TRUE,
+        ),
+        'premium_level' => array(
+          'type' => 'text',
+          'label' => t('Premium level for the node'),
+          'options list' => 'premium_level_option_list',
+          'restriction' => 'input',
+        ),
+      ),
+      'group' => t('Node'),
+    ),
+  );
+}
+
+/**
+ * Set the content as premium.
+ */
+function premium_set_content_premium($node, $premium_level = NULL) {
+  $node->premium = $premium_level;
+}
