protect empty list generation (derived classes can use it)