diff --git a/Makefile.am b/Makefile.am
index a0f2a88..54c45a2 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -37,8 +37,6 @@
  			doc \
 			tutorial \
 			contrib \
-			CONTRIBUTORS \
 			LICENSE \
 			CHANGES \
-			DISCLAIMER \
 			NOTICE
diff --git a/tutorial/ocaml/CalcClient.ml b/tutorial/ocaml/CalcClient.ml
new file mode 100755
index 0000000..5a8467b
--- /dev/null
+++ b/tutorial/ocaml/CalcClient.ml
@@ -0,0 +1,74 @@
+(*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*)
+
+open Arg
+open Thrift
+open Tutorial_types
+open Shared_types
+
+exception Die;;
+let sod = function
+    Some v -> v
+  | None -> raise Die;;
+
+type connection = {
+  trans : Transport.t ;
+  proto : Thrift.Protocol.t;
+  calc : Calculator.client ;
+}
+
+let connect ~host port =
+  let tx = new TSocket.t host port in
+  let proto = new TBinaryProtocol.t tx in
+  let calc = new Calculator.client proto proto in
+    tx#opn;
+    { trans = tx ; proto = proto; calc = calc }
+;;
+
+let doclient () =
+  let cli = connect ~host:"127.0.0.1" 9090 in
+  try
+    cli.calc#ping ;
+    Printf.printf "ping()\n" ; flush stdout ;
+    (let sum = cli.calc#add (Int32.of_int 1) (Int32.of_int 1) in
+       Printf.printf "1+1=%ld\n" sum ;
+       flush stdout) ;
+    (let w = new work in
+       w#set_op Operation.DIVIDE ;
+       w#set_num1 (Int32.of_int 1) ;
+       w#set_num2 (Int32.of_int 0) ;
+       try
+	 let quotient = cli.calc#calculate (Int32.of_int 1) w in
+	   Printf.printf "Whoa? We can divide by zero!\n" ; flush stdout
+       with InvalidOperation io ->
+	 Printf.printf "InvalidOperation: %s\n" io#grab_why ; flush stdout) ;
+    (let w = new work in
+       w#set_op Operation.SUBTRACT ;
+       w#set_num1 (Int32.of_int 15) ;
+       w#set_num2 (Int32.of_int 10) ;
+       let diff = cli.calc#calculate (Int32.of_int 1) w in
+	 Printf.printf "15-10=%ld\n" diff ; flush stdout) ;
+    (let ss = cli.calc#getStruct (Int32.of_int 1) in
+       Printf.printf "Check log: %s\n" ss#grab_value ; flush stdout) ;
+    cli.trans#close
+  with Transport.E (_,what) ->
+    Printf.printf "ERROR: %s\n" what ; flush stdout
+;;
+
+doclient();;
diff --git a/tutorial/ocaml/CalcServer.ml b/tutorial/ocaml/CalcServer.ml
new file mode 100755
index 0000000..24d7d03
--- /dev/null
+++ b/tutorial/ocaml/CalcServer.ml
@@ -0,0 +1,89 @@
+(*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*)
+
+open Arg
+open Thrift
+open Tutorial_types
+open Shared_types
+
+exception Die;;
+let sod = function
+    Some v -> v
+  | None -> raise Die;;
+
+class calc_handler =
+object (self)
+  inherit Calculator.iface
+  val log = Hashtbl.create 23
+  method ping  = Printf.printf "ping()\n" ; flush stdout
+  method add a b =
+    Printf.printf"add(%ld,%ld)\n" (sod a) (sod b); flush stdout ;
+    Int32.add (sod a) (sod b)
+  method calculate logid w =
+    let w = sod w in
+      Printf.printf "calculate(%ld,{%ld,%ld,%ld})\n" (sod logid) (Operation.to_i w#grab_op) w#grab_num1 w#grab_num2; flush stdout ;
+    let rv =
+      match w#grab_op with
+	  Operation.ADD ->
+	    Int32.add w#grab_num1 w#grab_num2
+	| Operation.SUBTRACT ->
+	    Int32.sub w#grab_num1 w#grab_num2
+	| Operation.MULTIPLY ->
+	    Int32.mul w#grab_num1 w#grab_num2
+	| Operation.DIVIDE ->
+	    if w#grab_num2 = Int32.zero then
+	      let io = new invalidOperation in
+		io#set_what (Operation.to_i w#grab_op) ;
+		io#set_why "Cannot divide by 0" ;
+		raise (InvalidOperation io)
+	    else
+	      Int32.div w#grab_num1 w#grab_num2 in
+
+    let ss = new sharedStruct in
+      ss#set_key (sod logid) ;
+    let buffer = Int32.to_string rv in
+      ss#set_value buffer ;
+      Hashtbl.add log (sod logid) ss ;
+      rv
+
+  method zip =
+    Printf.printf "zip()\n"; flush stdout
+
+  method getStruct logid =
+    Printf.printf "getStruct(%ld)\n" (sod logid) ; flush stdout ;
+    Hashtbl.find log (sod logid)
+
+end
+
+let doserver () =
+  let h = new calc_handler in
+  let proc = new Calculator.processor h in
+  let port = 9090 in
+  let pf = new TBinaryProtocol.factory in
+  let server = new TThreadedServer.t
+		 proc
+		 (new TServerSocket.t port)
+		 (new Transport.factory)
+		 pf
+		 pf
+  in
+    server#serve
+;;
+
+doserver();;
diff --git a/tutorial/ocaml/README b/tutorial/ocaml/README
new file mode 100644
index 0000000..f68e835
--- /dev/null
+++ b/tutorial/ocaml/README
@@ -0,0 +1,15 @@
+
+This is the ocaml tutorial example.  It assumes that you've already
+built and installed the thrift ocaml runtime libraries in lib/ocaml.
+
+To compile this, you will need to generate the Thrift sources for
+ocaml in this directory (due to limitations in the OASIS build-tool):
+
+  % thrift -r --gen ocaml ../tutorial.thrift
+  % oasis setup
+  % make
+
+This will produce two executables Calc{Server,Client}.<type> where
+<type> is one of "byte" or "native", depending on your ocaml
+installation.  Just run the server in the background, then the client
+(as you would do for the C++ example).
diff --git a/tutorial/ocaml/_oasis b/tutorial/ocaml/_oasis
new file mode 100644
index 0000000..4cab080
--- /dev/null
+++ b/tutorial/ocaml/_oasis
@@ -0,0 +1,32 @@
+Name: tutorial
+Version: 1.0
+OASISFormat: 0.3
+Synopsis: OCaml Tutorial example
+Authors: Apache Thrift Developers <dev@thrift.apache.org>
+License: Apache-2.0
+Homepage: http://thrift.apache.org
+BuildTools: ocamlbuild
+Plugins:     META (0.3),
+  DevFiles (0.3)
+
+Library tutorial_thrift
+  Path: gen-ocaml
+  FindlibName: tutorial_thrift
+  buildTools: ocamlbuild
+  BuildDepends: threads,thrift
+  Modules: Calculator,Shared_consts,Tutorial_consts,SharedService,Shared_types,Tutorial_types
+  XMETARequires: threads
+
+Executable CalcClient
+  Path: .
+  MainIs: CalcClient.ml
+  Build$: true
+  CompiledObject: best
+  BuildDepends: thrift, tutorial_thrift, threads
+
+Executable CalcServer
+  Path: .
+  MainIs: CalcServer.ml
+  Build$: true
+  CompiledObject: best
+  BuildDepends: thrift, tutorial_thrift, threads
