Too much changes to comment :(