Make gen a separate module