--- a
+++ b/tutorials/tutorial_5min.md
@@ -0,0 +1,107 @@
+## Quick Tutorial
+
+ANTsPy functions and classes are generally faithful to the respective ANTsR versions,
+with the following consistent changes in naming convention:<br>
+* camel case in ANTsR is underscore case in ANTsPy
+    * e.g. resampleImage -> resample_image
+* anything preceeded by `ants` or `antsr` in ANTsR is removed since ANTsPy uses namespaces already
+    * e.g. antsImageRead -> ants.image_read
+
+### Read an Image
+
+```python
+import ants
+img = ants.image_read( ants.get_ants_data('r16') )
+print(img)
+```
+
+### Image Properties
+
+Image properties are pythonic and easy to get/set:
+
+```python
+import ants
+img = ants.image_read( ants.get_ants_data('r16') )
+
+print(img.spacing)
+img.set_spacing( (2., 2.) )
+
+print(img.origin)
+img.set_origin( (100,100) )
+```
+
+However, we still try to keep most of the associated ANTsR functions which are stand-alone, e.g:
+
+```python
+ants.get_spacing(img) # versus the pythonic `img.spacing`
+ants.set_spacing(img, (2.,2.)) # versus `img.set_spacing`
+
+imgclone = ants.image_clone(img) # versus img.clone()
+```
+
+### Converting to Numpy
+
+ANTsPy provides seamless conversions to Numpy arrays. Through the use
+of memory buffers directly in the C++ api, these calls are instantaneous and essentially free.
+
+```python
+import ants
+img = ants.image_read( ants.get_ants_data('mni') )
+img_array = img.numpy()
+```
+
+Do operations directly in numpy if you want, then simply make an ANTsImage right back
+from the numpy array (again instantaneous and "free"):
+
+```python
+import ants
+img = ants.image_read( ants.get_ants_data('mni') )
+img_array = img.numpy()
+
+img_array += 5
+
+# copies image information and just changes the data
+new_img1 = img.new_image_like(img_array)
+
+# doesnt copy any information
+new_img2 = ants.from_numpy(img_array)
+
+# verbose way to copy information
+new_img3 = ants.from_numpy(img_array, spacing=img.spacing,
+                           origin=img.origin, direction=img.direction)
+```
+
+### Indexing 
+
+Images can be indexed (getting and setting) exactly as if they were arrays.
+```python
+import ants
+img = ants.image_read( ants.get_ants_data('mni') )
+
+vals = img[200,:,:] # get a slice
+
+img[100,:,:] = 1 # set a slice
+```
+
+### Operator Overloading
+
+All common mathematical operators are overloaded to work directly on ANTsImages:
+
+```python
+import ants
+import numpy as np
+img = ants.image_read( ants.get_ants_data('mni') )
+img2 = img.clone()
+img3 = img + img2
+print(np.allclose(img.numpy()+img2.numpy(), img3.numpy())) # same as if done in numpy
+```
+
+### Chaining Commands
+In ANTsR you can use the `%>%` command to chain operations. That's real nice. In ANTsPy, you can 
+do this automatically on ANTsImages. Amazing stuff..
+
+```python
+import ants
+img = ants.image_read(ants.get_ants_data('r16'))
+img = img.resample_image((64,64), 1, 0).get_mask().atropos(m = '[0.2,1x1]', c = '[2,0]',  i = 'kmeans[3]', x = mask )
+```