You can make almost anything "successful" if you try hard and enough and spend enough money. If we just got rid of subtyping and mutation (which imo, are the core "features" of OOP), we would be in a lot better place. Though, if OOP means just grouping data together and providing functions that operate on that data, I don't have any problem with that. Most functional code works like that, it just doesn't mutate the data.