separate extract and generate methods
use setuptools entry_points for script generation
improve API usability