implementing more of gen