diff --git a/src/vim9class.c b/src/vim9class.c
new file mode 100644
index 0000000..b2307cb
--- /dev/null
+++ b/src/vim9class.c
@@ -0,0 +1,110 @@
+/* vi:set ts=8 sts=4 sw=4 noet:
+ *
+ * VIM - Vi IMproved	by Bram Moolenaar
+ *
+ * Do ":help uganda"  in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ * See README.txt for an overview of the Vim source code.
+ */
+
+/*
+ * vim9class.c: Vim9 script class support
+ */
+
+#define USING_FLOAT_STUFF
+#include "vim.h"
+
+#if defined(FEAT_EVAL) || defined(PROTO)
+
+// When not generating protos this is included in proto.h
+#ifdef PROTO
+# include "vim9.h"
+#endif
+
+/*
+ * Handle ":class" and ":abstract class" up to ":endclass".
+ */
+    void
+ex_class(exarg_T *eap)
+{
+    int is_abstract = eap->cmdidx == CMD_abstract;
+
+    char_u *arg = eap->arg;
+    if (is_abstract)
+    {
+	if (STRNCMP(arg, "class", 5) != 0 || !VIM_ISWHITE(arg[5]))
+	{
+	    semsg(_(e_invalid_argument_str), arg);
+	    return;
+	}
+	arg = skipwhite(arg + 5);
+    }
+
+    if (!ASCII_ISUPPER(*arg))
+    {
+	semsg(_(e_class_name_must_start_with_uppercase_letter_str), arg);
+	return;
+    }
+
+    // TODO:
+    // generics: <Tkey, Tentry>
+    //    extends SomeClass
+    //    implements SomeInterface
+    //    specifies SomeInterface
+
+
+    // TODO: handle until "endclass" is found:
+    // object and class members (public, read access, private):
+    //	  public this.varname
+    //	  public static varname
+    //	  this.varname
+    //	  static varname
+    //	  this._varname
+    //	  static _varname
+    //
+    // constructors:
+    //	  def new()
+    //	  enddef
+    //	  def newOther()
+    //	  enddef
+    //
+    // methods (object, class, generics):
+    //	  def someMethod()
+    //	  enddef
+    //	  static def someMethod()
+    //	  enddef
+    //	  def <Tval> someMethod()
+    //	  enddef
+    //	  static def <Tval> someMethod()
+    //	  enddef
+}
+
+/*
+ * Handle ":interface" up to ":endinterface".
+ */
+    void
+ex_interface(exarg_T *eap UNUSED)
+{
+    // TODO
+}
+
+/*
+ * Handle ":enum" up to ":endenum".
+ */
+    void
+ex_enum(exarg_T *eap UNUSED)
+{
+    // TODO
+}
+
+/*
+ * Handle ":type".
+ */
+    void
+ex_type(exarg_T *eap UNUSED)
+{
+    // TODO
+}
+
+
+#endif // FEAT_EVAL
