 So, I have any data to show is just some pitching. What happened? So basically I built an email editor like 6 months back, something like this. So basically, hello. So, today's talk is basically some pitching about some suffering that I went through from these 6 months. So, it turns out that creating a button to render in email is kind of a lot of work. You're not really putting a button in the email. It's like you have to form it out with a lot of tables. So, it's that you're actually mimicking the button, which this is actually the code that I use to render the whole button in the email. So, the reason for all these things is that I have to end up creating multiple box. So, the first box might be... I think the first box is wrapping around it. The second is to adding paddings or borders. So, wrapper, borders and then padding, then only you reach the real link. And that's why there's a lot of HTML. Then the second suffering is that Outlook will be giving a lot of problems to you when you try to render an email for Outlook. 2007, 2010 and 2013. And that's the IE6 of email clients. And for these 3 email clients, they can't really render the line height properly. And this is the hack, all the hack that I use. When you render line height, it's strange that if you use the line height as a percentage, it will add weird spacing under... Hold on. It will add weird spacing. Percentage will be on top. So, if you set line height to be 1.5, then the 50 extra pixels will be added to the top instead of putting half of it in front and 25% at the below. That's why this hack is necessary. And the other point is Gmail will not render your responsive email. I don't know why, but it seems to be that they stripped out all of the height of your email. So, when you render on Gmail, you only left with all the inline CSS. Even on the Gmail mobile app, which you can see in the first image, it's actually rendering the desktop version whereas if you use iPhone, the mail client, it will do it well. But I think for Gmail iPhone app, it will do the first one. Then, I think this is the last one. DRAW API is not that friendly because it doesn't allow you to say when I register a new element to be able to drop on a target, you can't say that what happened when it dropped. You have to do it at the drop. So, this is how you do it. So, you have to define the drag start, then you pass all the drop data as something like you have to do it with the data transfer object. Then, when it drops, only you can pull it out or if not doing it this way, you have to pull it to the global context and use an ID to pull it out when it drops. I would more prefer something that when I register a new drag target, then it should be able to say that when it drops, then it just returns whatever data that is registered at the target. So, it's more straightforward and it's easier to understand the code. If not, you have to say that this is the drop drag target and maybe on the other file, then only you say that pull this data that you have no idea where it comes from and then try to do something with it. Thank you. So, I'm Xiaowen. Ya. And if you have information online anyway, because it would be really useful. I mean, I don't feel like to read it because I used to do HDA about a year ago at the night band. It's interesting we say about A6 still being done in the Netherlands. But have you got a sort of general feel about this or something like that? Not yet. Thank you. Please do make it. You're really handy. So, I try to pull out from the code base. Basically, there is a lot of hack for the other 2007 10 and 13. The rest of the other client is actually quite good.