refactor to use a factory based approach
use strict generated functions
prepare 0.1.0