feat(#48): refactor generator