proper generation