better generation classes