templated from yo py-microlib
update via yo py-microlib