clumps does not need to be done by hand. Many modern fully featured IDEs have functionality (often labeled as "Extract Class") that is capable of performing this refactoring automatically or nearly so. This can decrease the cost and improve the reliability of the refactoring, thus enabling otherwise reluctant developers to do so expediently. Example Naturally, data clumps can exist in any object-oriented programming language. The example below was chosen simply because of its simplicity in scope and syntax. In C# Prior to refactor public void AddCoords(int x, int y, int z) { /* … */ } Post refactor public void AddCoords(Coords coords) { /* … */ } public class Coords { public Coords(int x, int y, int z) { X = x; Y = y; Z = z; } public int X { get; } public int Y { get; } public int Z { get; } } In Java public static void main(String args[]) { String firstName = args[0]; String lastName = args[1]; Integer age = new Integer(args[2]); String gender = args[3]; String occupation = args[4]; String city = args[5]; welcomeNew(firstName, lastName, age, gender, occupation, city); } public static void welcomeNew(String firstName, String lastName, Integer age, String gender, String occupation, String city) { System.out.printf("Welcome %s %s, a %d-year-old %s from %s who works as a%s\n",firstName, lastName, age, gender, city, occupation); } In the previous example, all of the variables could be encapsulated into a single "Person" object, which could be passed around by itself. Additionally, the programmer may then recognize that the welcomeNew method would be better associated with the Person class, and could then come up with other relevant actions associated with the Person. For instance, the code could be refactored and expanded as follows: public static void main(String args[]) { String firstName = args[0]; String lastName = args[1]; Integer age = new Integer(args[2]); String gender = args[3]; String occupation = args[4]; String city = args[5]; Person joe = new Person(firstName, lastName, age, gender, occupation, city); joe.welcomeNew(); joe.work(); } private static class Person { /* All parameters have been moved to the new Person class where they are properly grouped and encapsulated */ String firstName; String lastName; Integer age; String gender; String occupation; String city; public Person(String firstName, String lastName, Integer age, String gender, String occupation, String city) { this.firstName = firstName; this.lastName = lastName; this.age = age; this.gender = gender; this.occupation = occupation; this.city = city; }