Steve Faulkner
AbilityNet - Accessibility 2.0 Conference

Steve

Thank you Robin, and thank you for the nice introduction. Yes, I would say that I did create the Web Accessibility Toolbar, but it was actually work of a lot of other people involved. I took a lot of ideas from other people and a lot of code from other people and there is another person that I call Joun who is in Japan and who shies aware from publicity, unlike me. Without him, what is the web accessibility toolbar would not be available. So I can’t take all the credit myself, but I’m glad people find it useful.

As it says, My names Steve Faulkner. I’m from the Paciello Group. The Paciello Group is an accessibility, Software and Web Accessibility consultancy based in the United States, Nashua, but we also have offices, well there is my room, my back room, that’s in London and another one that use to be in Wigan but is now in somewhere in near Newcastle. There’s Lemon Works who you may know, and we’ve got other rooms throughout Europe and the world, but we do actually have an office in Nashua. But anyway, I’m going to be talking today, about AJAX, new technologies, such as Aria, and I’m using Twitter as a case study, so hopefully most of you know what Twitter is, I didn’t really use Twitter until a couple of weeks ago when I decided to use it as a case study, but it has some features that illustrates some of the classic web 2.0 problems, some of AJAX and how screen readers interact with that. It is also a very simple interface. I like using it for this presentation.

Upfront, even though I’m talking about mainly AT people used by people who are blindness or vision impairment. It is not just about vision impairment and blindess. It is also about other disability like cognitive and physical disability. I just wanted to make that point. Also it may appear it is not an exercise in Twitter bashing, I’m not trying to say how crap the Twitter interface is and how poorly it has been developed, you can make that judgement for yourself. Here we have a screenshot of twitter, here it is showing the basic, what the basic elements are, anad I’m going to be looking at a couple of things in particular about this the first thing one of the things I’m going to be looking at is the text area where you put your twitter text in and also in particular the number count down, it’s a feature that tells you how many letters you have left before can finish your twitter, how many letter you have left, its a nice usability feature I suppose. The other main area is when you write a twitter or twitters from other people that you are following, they will appear in this area, there is a list of twitters there, so as you can see, so there is one from my boss, one of .j and the web access centre. In particular I am going to be looking at some of the interactive features of these twitter messages, in particularly there is one button that is symbolised by a star that you can press and it will add it to your favourite. There is also another one that you can press and write a message a twitter to a particular person, so those are the particularly parts of the interface that I am going to be concentrating one.

Here are some twitter 1.0 issues. Things like what the alt text. Obviously here you can see, underscore emplty is not a great alternative text or accessible name for that particular pseudo button. I’m not going to be talking about this stuff because the guideance is already out there on how to fix these issues. So again, there is other stuff about the way things are labels, the way controls are labelled, also an duplications. I’m not going to be looking at those things either. Again, 147 links on the same page, many of them duplicate, but I’m not gtoing to be talking about. I’m not saying that these issues are not important, what I am saying that these issues there is lots of information out there already about how to enhance the accessibility.

What I am going to talking about today, one of the things that is extremely important in the web20 in the type sites, is that ensuring that Javascript that is usable by people with disabilities. What I mean is that obviously is if there is lots of functionality that uses Javascript, the most important thing is the user using this technology or a disabled user can still interact with this technology. I’ll be looking at under this sort of idea and AJAX issues, and providing name role and state information, and keyboard accessibility. I won’t be talking about keyboard accessibility that much. I’m also looking at one issue inpartiuclar and that is the use of the abbreviation element in microformats. I’m going to get this one out of the way because it staddles both for me. Microformats the way I understand is a way of creating a rich semantic using current HTML elements. In particular for some of the microformats they use the abbreviation element. Why is this an issue? The used to provide the expansion of the abbreviation, to provide human readable data, not machine readable data. Now, in Twitter for example they are using the Microformat, I think it is Data, I’m not sure exactly. But they are using a microformat they are using an abbreviation, how long ago it was posted, for example 90 minutes ago, that information is racked in an abbreviation, has a title of 2008-04-09 19:33. This information will be heard by people using assistive technologies, not under all the configuration, not all the time, but if they are interested in getting information about the abbrevious, then this is what they will hear when they access the expansion of the abbreviation. It is a misuse of the abbreviation element. You might have heard of the web standards grup, they have a particular task force for accessibility. The accessibility task force, the co-chair is a guy called Patrick one of the things they worked on was this microformat uses the abbreviation, what are the possible options, that will reduce the problem. They came up with a couple of ways to do it. Instead of using an abbreviation that we know that assistive technology reports to users, why not use Expand, because we do know that asstive technology does not read this. If we are using a magnifier reader, such as Zoomtext, if the user mouses over the time, it may bring up a tooltip that is the title. There is one example where you can wrap it by spanning it the. The better way to do it is to use an empty span with that information in it. That way, it’s not going to be heard by anybody, and it’s not meant to be anyway, because it’s machine readable data. Unfortunately the microformat community don’t seem to want to take on board. First example, a very simple solution to an issue that makes it better for people with disability that use AT to access the information. The second useful tip, because unlike Jeremy, I am talking giving you tips, so hopefully there is a great contrast and I am using lots of slides, but hopefully the contrast in our styles, trying to project a similar message. As I said one of the things I’m looking at are these buttons. These buttons which is the favourite button or the send a message button or the trash button as well, they are actually buttons, and they do something. But they are actually using the link element, the A element, to achieve what they are doing. They have a link with an event handler attached that sends off the AJAX request. In this situation the user, a visual user, it looks like an icon button, and they push it and it does something. For an AT user, they get information that is not correct, they get told it is a link. The role information that is given to the user is incorrect. The name state information due to the the poor alternative technology, the name and state information about what state and what the thing does is is given is not clear, Icon star empty, underscore empty, is not good. What we need to be thinking about is providing correct roles where possible and correct name state information where possible, and clear human readable name state information. Now in this case again it’s as simple message for a button, use a button, and provide the name state information within the alternative text, so for the first example, the star favourite with in its unselected state I’m using an input type image, I’m doing the same thing, and there is actually less code to achieve the same thing, but I’m using input type image, so when an AT encounters it they will get told it is a button, so we are getting the correct role, then also what I have is an alternative text, and I’m not saying these are set, the role for the unselected state, the favourite unselected, when the user selects the button the alt because favourite selected. The issue here is that this button, even though this button has two states, it’s press or toggle button, HTML doesn’t have a rigit method for doing that. You need to provide the state information about whether or not it is pressed within the alternative text. Just simple solution to a simple problem but people are always using links for these things when they don’t need but really they shouldn’t. Moving on to Twitter and AJAX. AJAX in general terms in technology, there are two main issues, users not having access to content changings, and users not being aware of the changes to content if they can access it. The first, I’ll give examples of both. I have a tendency to talk about it before I get to the slide. With in regards to users not having access to content changes, there are two major screen readers in the windows platform, JAWS and Windowseyes, both use the virtual buffer, a copy of the DOM, a copy of the page, this is what the user views when they are browsing, so they don’t view what’s in the browser, they view a copy of what’s in the browser. This is done so they can move through it like by heading. When they are viewing this copy of the what’s in the browser, when the user pressing a control such as a button, or a link, their view, the copy of the what gets updated. The user presses a button, the button event passes to the browser, the browser does what it does, updates some content on the page. And the screen reader updates, to reflect what’s in the browser. Important to note that the update can 600ms after control is pressed, so the update is tied to the user pressing the button. Also note the cavet that this is JAWS 7.1 but is currently Windows Eyes. What you have is the issue that the screen reader doesn’t listen to what is going on the screen and update in reference to changes that occur, it only updates in reference to user interaction.

What I have over here is a picture of the Twitter interface in Firefox and I’m showing one of the buttons which is the favourite buttons, I am using it also contains a view of the firebug tool, it’s a great tool, many people know this, one of the things you can do, it can tell you how long it takes between pressing the button and it doing what it does in AJAX and the server then comes back to change content on the screen. In this case on average if you press the favourites button for it to change state from underselected to selected, takes around a second. Remember what I said previously, a screen reader update occurs in around 600ms, so you have an issue there. What effectively happens for examples, in this next screen we have the favourite speduo button that is not selected the browser and screen reader view are not synchronised because the screen reader user sees an unselected button. The browser contains an unselected button, the user presses the button, the button changes state in the browser view after a second to selected as against unselected and the twitter is added to the user favourites, but in the screen reader view the button remains unselected and the twitter, this particularly twitter is not added to the favourite, so the screen reader user still sees the unselected button and they don’t see a favourite added to their list and list is because key press the update is initisated, 600ms, an approximation, it varies across browsers, the content changes occurs, if the content change occurs before the update is finsished, say at 300ms, I should say also this is not just an AJAX issue, it is an issue with any content change that occurs using Javascript, it’s only exaserbated by AJAX because you go back and forth with the service. The browser is synchronised again. If the content is changed after the screen reader view is updated the content is not available. It might sound confusing, but it’s perfectly clear to me. I’ve written about it and Jax Lemon has written about it, there are a number of articles out there about what I am explaining today. Good news is that JAWS 7.1 is effectively solved this issue, they no longer tie an update of the screen reader view to a user action they listen to for changes or DOM events that trigger changes within the content of the browser and they update it automatically. As far as this aspect of the AJAX issue has effectively gone away for users of JAWS 7.1, bad news is that even the latest version of Windows Eyes has not, so this issue is still out there for users of assistive technology. What can be done. There are a number of things y7ou can do, you can provide content in a different view. I am going to move to an example here. So this is a stock prices example, we have on the screen three daily tables that contain information about a number of stocks in different cities, in London, New York, Tokyo. What we are seeing is information is updating the stock change is trend information is also given to the user obviously for a visual user with normal vision this is fine, we also have this faye technique which actually draws you to when a stock change you are drawn to where it is happening. Problem is for a screen reader user there is currently no way to get that information to currently alert the user to something that has changed or and also you have the issue because the user is not actually doing anything that their screen reader view, such as 7.1- or Windows Eyes, doesn’t get updated. One of the things you can do, in this example I’ve got a preferences and I’m turning on the use change logger, and what this does is give the some check boxes appear against each row, each stock price, so I can choose the stock prices that I want to monitor. What this effectively does, it brings those I am interested in monitoring into a single data table, so rather than having to look through three data tables, I can concentrate on, it solves one issue or a potential issue, you provide a filter, this is also for example good for users of screen magnifiers, seeing only a small part of the screen. Bringing relative data together where the user is looking seems like a good idea. There is also another thing you can do which solves the helps reduce the problem of users not getting access to the updated content even if they know it should be updating, but due to the technology they are using, they are not getting the updates when they need to is that they allow user control, and also for users who have cognitive disabilities that they do not want to see constantly changing information, but get some information as to the update, is that you give them the power to actually control when the update occurs. So their view will only update once they activate the update button. So this just a couple of ways you can, a particular way, you can provide different views. I should say that this, thank you to Jaz L for building this, and this concept is originally suggested or genisus between a conversation Jez and Mike Davies who is here today as some conference years ago, and then Jez built something, and I took some ideas from it and he built on it. I don’t want you to get the idea that it was just my idea, and usual it was built on many other peoples ideas. Another thing, very simple thing you can do, is to inform the user that page content updates, that they may need to update, change their view, and in the near future, I say the near future because, it’s almost complete, but the for mainstreme AT, the support there yet for this particular aspect for Aria. Seomthing called Wayaria regions which solves the issue. Informing the user, what I am talking about is a very simple thing, and what I will also explain, the perspective I am coming from, I work alot with web applications, not necessarily talking about things that are available in the wild, but working with companies that provide web applications and so they want to find solutions that may not be appropriate under certain circumstances, but are under. I’m not saying that this is inappropriate. Just as a hint that this page changes u7pdates frequently, then try refreshing the page, but really for users of older versions of JAWS and WindowEyes, what I am mean by refreshing the page is refreshing the screen reader view of the page which is a particular keystroke in the screen reader. If they know that things are changing or likely to change they can update their page, and so you can give them some simple information that you hide off screen, but they still get the information at the top of the page, so they get told that things are going on that they may not be aware of. It’s a pretty broad brush but at least it gives them a hint. So that’s looking at users not being able to access content, but the second issue is that users not being aware of changed content if they are aware of it. For example in later editions of JAWS, they know that if there is content changing on the page, if they are not aware of it and if there is content changing on the page and the way that. Its a very linear view, so they don’t get the view we see, it’s very simple. Looking at this main interface or aspect for Twitter, it that its just a text where you put your text in there and it has this counter that counts down as said previously, but when the user types into the text area, when they are in forms mode, they have to go out of browsing mode go into forms mode in order to interact with the text area. For two, that somethnig is changing that counter is reducing in value, but they are not aware of it because they are in the text box and they can’t see it essentially. Having said that one of the things I sent out a mail to some of the JAWS and Window Eyes user lists. I got back somebody saying that The best thing I’ve seen using JAWS 9 is when I exist forms most while typing the message, and many words you can type. You get the idea. Assitive technology users find this information useful, but in order to get they, have to stop what they doing, exist out of forms mode, navigate that content that is not fast, a couple of keystrokes. In order find out, how many letters they got left. As you can see it is a problem. It’s nothing to do with AJAX, but to do with dynamic content on the page, which is typically part of AJAX idea. I’ve already said what I’ve said, sighted users can glance to see how much more they can write, but vision impaired users can not practically benefit from this information. There are three possible solutions. I’ve got a demo to show you. 1 is use altert boxes. 2 is provide sound ques, and the 3rd is to use arial regents.

So what we’ve got here, and now again, my good friend and colleague Hans Healent, that I worked at TPG, built this from an idea we had Hans and I spoke about it a bit. Essentially what we have is a text area and as you type into it – as you type into it – should be getting – not getting any sound – this always happens to me, every time. I’ll go back to the – alright now we’ve got the sound coming up. What’s going on is that as you type you’ll get some sort of sound that occurs at 30, 15 and 5, essentially an audio cue as to how many letters to go. Hans built this and it’s overly complicated, but what he allows you to do, is to change, and choose sounds, textual alerts, aria live region updates, but what I’ll do is give you an example of the recorded speech version, and we’ll try it out to we can see.

Computer voice

30 left, 15 left, 5 left.

Steve

What it does it give you an audio cue. The amount of work that went into this is obviously an overkill, or maybe an overkill for this particular overkill for this application. But it is an example as to how you can provide the audio cue in real time whereas otherwise they wouldn’t get it. This uses a mixture of JAVAscript and Flash. People are saying that Flash and AT don’t mix well. Well the beauty of this is that the AT doesn’t have to interact with the Flash at all. It’s the user interaction with the text area that causes the Flash to fire. So it uses Javascript to get the Flash to trigger the MP3. So I’m not going to go through the way Aria version of it, because I promised that I wouldn’t use any AT today because it always ends up being in tears, mostly for me. Yes, so, in a nutshell there are ways to provide the audio information or audio cues to users so that they can have a similar experience, so in this case, it’s a usability feature, but in other cases it may be a critical aspect of the application, they need to know that things are going on, they need an altert about that.

I’ve moved beyond that, I’m going to be looking at a little Aria. For those, Web Accessible Initiative – Rich internet applications. It’s a W3 specification in development, as with other W3 specifications, such as XML, CSS, etc. One of the things that it does it allow to add name to custom controls and widgets using current HTML elements, so the assistive technology can reliably convey the information to the user. Aria allows more, such as drag and drop points. But the most interesting is, for me, is the aspect that you can add information to a button or an element to say what the role is and what the state is. I’ll give you a quick examples of that. Here we have a toggle button, so and it highlights, so when you turn it off, and you click on, andyou click it off, it changes state. Now – hold on a second – I’ve done it again – ok – there is one main point that I was trying to make with regards to Aria, it’s easy, it doesn’t involve much extra work at work, and it’s easier in a number of ways because for 1 if you are trying to make a custom widget accessible then you usually have to put the role and state information somewhere within the custom widget, usually within the title attribute or something, and it doesn’t always fit, and it doesn’t always work well, and it’s a lot of work you have to do. So you have to manually say what a state is or is not. So it’s easy to use that what I was going to say. Now I’m going to go back to my examples. So we had this Aria toggle bar, and it’s a button that has two states, on and off, or selected or non-selected. If you want to have the toggle button anway, y7ou have to have the Javascript to make it work, to add the way Aria capability to it and what the Aria capability is adding to it does you give it a role and you give it a state. These examples here, the not pressed state code, again I’m using an input type image because it’s a button. The way Aria code is essentially that code that is highlighted – role equals button and Area pressed equals false – so you‘re giving the role information and the state information. And then using your Javascript when the user presses the button that you simply have to change the aria press state or attribute to true, so it ort to make this instead of being a button or some other span or anything that the AT can’t understand, it ort to make it understandable to the AT, so all you have to add is add a few attributes. It’s a very low overhead in most cases, another example of is the tri state checkbox. So you’ve got three states – you’ve got the unpressed the mixed state and the press or partial state and the pressed state. Again, what you have, you have you I’ve used an input type image, here the reason why I’m using input type image is for 1 you get the keyboard operability of it for free. Ok, so instead of using a span and having to add a list of events to check for certain keyboard input, you have it’s already there, because the input type image has has a you know you can tab to it, you can press it, ok. So you get that stuff for free, so then you just add, in this case, I’ve jused input type image, roller checkbox, and aria check equals false, so the default state is false, so in order to change it, once its clicked you just add something within the javascript that then changes the aria to check to mix. Ok. Ok great. I will quickly show you before a, ‘cause I’ve got five minutes left, an example in a code example of using a aria live region, now this is what I would be using for this this the flicker count down thing that tells you how many characters you have left. You would use a live region for it, and what the live region does is essentially is that it tells the AT that to speak or to announce this information as its changing, ok, but obviously if you have lots of things changing on the page and you and you’re AT user, you just don’t want to hear all around with stuff coming at you. So aria includes a range of politeness levels, they’re called so, so you have polite, assertive, rude. And what these things do, is that for polite while the AT user is doing something like typing, then the polite, you won’t hear the polite update. Once the user stops, they would hear the polite update, so imagine if the useris typing into the text box, while they are typng they won’t hear those changes in the live region, but as soon as they stop for a moment, they get told 32, or they get told 20, so immediately you can see that they now have the same access or similar access to the information as a sighted user, because a sighted user can just glance up as look back, they can just stop for a moment and gt the same information. Yeah, all these or some are already available, but all will be available. Again, it’s very simple to add aria live regions, it’s as simple as adding the aria live attribute, and it has a number of states, one being off, one being polite, the other assertive, and the other rude, and they have associated behaviours with them. So all it takes to make that information available to a AT that supports it, which is coming to an AT near you soon, is the user of this single attribute, that’s why I am saying it’s easy. Some might disagree, but I do think it’s quite easy.

Now, quickly about implementations in progress, it has that the way aria not everything the way aria has, but large parts of it have browsers support in firefox, windows and linux, ie 8 beta, the opera browsers coming along, screen reader support, jaws windows eyes, nvda, firefox, a lot of the libraries are building the way of aria support I believe, thank you Christian. That’s the other thing that which makes it easy, because if you are using this third party libraries, or widget libraries, or javascript libraries, that have built in aria support, you don’t have to worry about it because it is already done for you. It’s a wonderful thing. And things like that currently like app like google apps, notebook, web, maps, toolkit have this stuff built in as well, or building it in. So, it’s well, it’s a well backed technology, accessible technology, and it’s not going to go away, and it’s only become more pervasive, which I think is a good thing for assistive technology users. That’s that, making it on my feet, and if you didn’t get the reason why its a apart from the bad alteration is that yeah is that you can give audio keys, anyway you can work it out for your work.

Thank you and thanks again to Hans and Jen for their help with, with this presentation.

Yeah, thank you.

Robin

Fantastic, thank you very much indeed. I’m sorry we had to rush you at the end. We have got a bit of time, a good bit of time.

Steve

No that’s fine.

Robin

In fact what we are going to do if it’s ok with you, and if it’s not too off putting, is we will do the change of to Christian’s machine while we are doing your Q&A.

Steve

No, that’s absolutely fine.

Robin

Fantastic, brilliant, I am so excited by all of this, I really am, because frankly at the moment I’m quite nervous about all the dynamic stuff that’s going to be going on with AJAX applications and the fact that screen reader users, even with the latest version of JAWS for example, you just don’t get that feedback of what is updated, if anything, you know you have clicked on somethink, a link or a button, has something happened? Who knows? You know. Whereas in the good old days with links, at least you knew that the page had refreshed, you had that sound, and you just had to plow down the page, until you found something that looked a bit different from the page before, so but with this you get no feedback at all. So I’m really excited about that.

Ok, Questions, Angels to the ready please.

Thank you, just wondering if there is a way to connect how web-site that have a program to use by if you like by mainstream and how they used by people who operate through access assistive technologies. I find that a lot of colleages are IT illiterate and they have help me they say move the mouse on the screen, but nothing happens because it’s in my screen reader mode. And when I am using the screen reader, it’s reading things to me and to everyone else, but they are not actually on the screen, so my IT helpers actually have not got a clue as to what is going on. Is there is a way to link the two worlds, so I have a way of how they are doing it, and they understand more how I am doing it, so we can actually work together?

That’s a good question, Yes, I wish there was. One of the things that I would say is that it’s not an easy answer, but, that how I’ve learnt how to understand the issues as you point out to them point them out, is by sitting and listening to a screen reader for hours and hours and hours, and looking at the being aware, of the, differences between the browser view and what the screen reader is reading out. For a start you have an understanding that there are those things, I think yes, in the end I suppose, it’s providing the user who is trying to explain something to you or the help is trying to explain something to you why this is occurring, so I suppose it is an education about how screen readers work is a good first step.

Robin

Thank you. I think having support is a good first thing, as we are moving away from understood behaviour to where the page just refreshes, to where the behaviour could be a one of a whole range of things that are all going to be new and very parterping for screen reader users and people with a cognitive impairment. You know. We’ve got nice behaviours like stuff, how guy’s are doing with yellow fade out on new content, but we are into a whole new area, and there is going to be a whole lot of people who are going to be confused or, you know, challenged by these new behaviours.

Any more questions?

Speaker

Inaudible

Steve

There are people with their hands up, so...

Robin

Where are the angels? Have they flown?

Robin

Are we down a mic?

Speaker: Steve, if you, can you take the mic around.

Robin

Sorry.

Steve

Yes.

Robin

I’m holding on to this one

Steve

You know.

Robin

There are two requirements here, I could just

Speaker

Yes

Phil

Hi I’m Phil Tear.

Steve

Hi Phil, how are you?

Phil

We meet in the flesh.

Steve

Yes

Phil

It’s about loud.

Steve

Eyes meet across a crowded room.

Audience

Laughter

Question

Yes, it’s a bit of a plug, but I’ll be fair to the others. There are others out there doing this sort of thing as well. I make a tool that can help sites self voice stuff. So you were saying that the thing you were having a little trouble with, the voicing of announcing you’re about to run out of letters, typing into a box, could be anything. Is quite tricky if you try and do it for yourself from scratch. Yes, probably quite a lot of work went into that demo there.

Steve

Yes it did, but not my work, my idea but other’s work thank you.

Phil

Could I. There are tools, like the one I make, Talkets, so also other web based text to speech and sound APIs out there and there is also sound javascript API out there that make it really to voice stuff on web pages. And I would like to point that out and say, it is an option, even for the less technically able out there. So, not necessarily as difficult as it appears. I’m personally a really big fan of voicing highly dynamic pages. Because I think it’s probably one of the only ways you can give that flexibility, but you have touched on really good things with Aria and the live area stuff. So, yes, just thought that I would point that out, and maybe ask you for your view of self voicing web pages and other web content and flash and that sort of thing.

Steve

Yeah well, I think there is horses for courses. With self voice stuff, we’re talking, its in partiuclary helpful to particular types of users, perhaps those with dyslexia, one of the issues I suppose as far as looking at users, users AT such as screen readers, who are typically blind or visually impaired is that having a secondary, in most cases, some secondary voice output is going to be problematic. So that is one of the issues, so unfortunately why I think the best solution in the end, in this way particular case, the way aria, the way it is implemented within the AT and user’s allowed to control the output and the yes. What yes.

New speaker

inaudible

Steve

One of the other things is that even though you have these different politeness levels it will be strongly encouraged because they are set by the author, it will be strongly encouraged. The AT allow override of all politeness levels, so they can chunk stuff off if they want to.

Robin

Thanks Steve. Thanks very much. Really sorry, we haven’t got time for another one. I know there are other questions waiting. If people want to grab Steve after lunch. Not while I am heating, because I might take your hand off something, but yes please, I’m more than open to question. Can I just say that I will, that the presentation will be available in HTML format soon as I have finished it up on the TPG sites. All the examples will be available, some are already available. So if you have missed anything, which you probably did, or you did not understand something that I am saying, which is probably true because I’m not that areodite in some circumstances, just like now, you can look at it and understand it and proose it at your leasure at date to be decided.

Robin

yes

Steve, Thank you.

Round of applause.