package, cleanup and organize
add usage example