set of differnt programming patterns