needed for generalisation