broke things in to modules and added examples