perfect gen methods