diff --git a/editors/js/punymce.js b/editors/js/punymce.js
new file mode 100644
index 0000000..5d84d9e
--- /dev/null
+++ b/editors/js/punymce.js
@@ -0,0 +1,27 @@
+(function($) {
+
+/**
+ * Attach this editor to a target element.
+ */
+Drupal.wysiwyg.editor.attach.punymce = function(context, params, settings) {
+  settings.id = params.field;
+  var editor = new punymce.Editor(settings);
+
+    /*
+    editor_css: '',
+    toolbar : 'bold,italic,underline,strike,increasefontsize,decreasefontsize,ul,ol,indent,outdent,left,center,right,style,textcolor,removeformat,link,unlink,image,emoticons,editsource',
+    plugins : 'BBCode,Paste,Image,Emoticons,Link,Protect,TextColor,EditSource,Safari2x,Entities',
+    min_width : 400,
+    entities : 'numeric',
+    styles : [
+      { title : 'Code', cls : 'pre', cmd : 'FormatBlock', val : '<pre>' },
+      { title : 'Quote', cls : 'quote', cmd : 'mceSetClass', val : 'quote'},
+      { title : 'Unquote', cls : 'quote', cmd : 'mceSetClass', val : ''}
+    ],
+    emoticons : {
+      auto_convert : 1
+    }
+    */
+};
+})(jQuery);
+
diff --git a/editors/punymce.inc b/editors/punymce.inc
new file mode 100644
index 0000000..84ab772
--- /dev/null
+++ b/editors/punymce.inc
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * @file
+ * Editor integration functions for PunyMCE.
+ */
+
+/**
+ * Plugin implementation of hook_editor().
+ */
+function wysiwyg_punymce_editor() {
+  $editor['punymce'] = array(
+    'title' => 'PunyMCE',
+    'vendor url' => 'https://github.com/MSchmidt/punymce',
+    'download url' => 'https://github.com/MSchmidt/punymce/archive/master.zip',
+    'libraries' => array(
+      '' => array(
+        'title' => 'Minified',
+        'files' => array('js/punymce/puny_mce.js'),
+      ),
+      'full' => array(
+        'title' => 'Full',
+        'files' => array('js/punymce/puny_mce_full.js'),
+      ),
+      'src' => array(
+        'title' => 'Source',
+        'files' => array('js/punymce/puny_mce_src.js'),
+      ),
+    ),
+    'version callback' => 'wysiwyg_punymce_version',
+    'settings form callback' => 'wysiwyg_punymce_settings_form',
+    'settings callback' => 'wysiwyg_punymce_settings',
+    'plugin callback' => 'wysiwyg_punymce_plugins',
+    'plugin settings callback' => 'wysiwyg_punymce_plugin_settings',
+    'versions' => array(
+      '1.0' => array(
+        'js files' => array('punymce.js'),
+      ),
+    ),
+  );
+
+  return $editor;
+}
+
+
+function wysiwyg_punymce_version($editor) {
+  $changelog = $editor['library path'] . '/changelog.txt';
+  $changelog = fopen($changelog, 'r');
+  $line = fgets($changelog);
+  if (preg_match('@([0-9\.]+)@', $line, $version)) {
+    fclose($changelog);
+    return $version[1];
+  }
+  fclose($changelog);
+}
+
+function wysiwyg_punymce_settings_form() {}
+function wysiwyg_punymce_settings() {}
+function wysiwyg_punymce_plugins() {}
+function wysiwyg_punymce_plugin_settings() {}
