Groups, bounds and cuts for integer programming problems