All right. Good afternoon, everyone. So you'll already have probably went through these in the last two sessions, but it's mandatory. So please read the fire exit announcements. So for today's session, we'll be talking about test-driven development for microservices. My name is Reshmi Krishna, and I'm a senior platform architect with Pivotal. Hello. My name's Aditya Saikali, and I'm an advisory platform architect with Pivotal. And I want to set a little bit of context about what we're talking about today. What we're concerned with is, how do we actually test microservices with this thing called consumer-driven contracts? Our goal isn't to give you an encyclopedic treatment of it, to give you a sense of what the workflow is when you work with this type of technology. And this is all because, unfortunately, as much as we all love microservices, the challenge with microservices is that they talk to each other. So when things talk to each other, that causes problems. And there's two categories of problems that causes. One is around testing and service evolution, and one is around continuous delivery. So we've broken up the talk into a section that focuses on service evolution first, and how to solve that, and a second part with another demo that talks about how to handle continuous delivery. So the first thing is, we have all these services. And let's say I was in a situation where I have this green microservice that calls the rectangle microservice, which calls the Pentagon microservice. And what would happen if I was to add or remove something? How many people here raised your hand if you modified an API and were quite concerned that one of your clients would break? And you left something in there just because you didn't want anybody screaming at you for breaking the code? So this is the service evolution problem. Can I add something? Can I remove something? And if I did, have I done it in a safe way? We don't want to be with microservices going back to the old way of having to coordinate releases with a whole bunch of people. We just want to release each microservice independently. So there are a lot of patterns for how we can evolve our service in order to make sure that it does not break the clients. Things like, for example, how many people have versioned their APIs? You have version one of the API, version two. That's a common pattern, or maybe you build extension points into your APIs so that you can actually extend things in the future. These are all good patterns, but the one we want to focus on is something called consumer-driven contracts. Just a quick show of hands. How many of you are familiar with the consumer-driven contracts pattern? Just a few people? OK. So for those of you who aren't familiar with it, let's kind of get a couple of pieces of terminology down. The first one is, what is a provider contract? If I'm the person who builds the service, I can basically, from my point of view, all of my clients want everything I offer. So I'm looking at this and saying, OK, my client A is going to call me, and they're going to invoke every operation I have, and I'm going to return to them everything that they care about, everything that I can offer. But this isn't how the world looks like from the point of view of the consumer. So we look at it from the point of view of the consumer. Maybe client A, when it calls the service, does not use every feature of my microservice. It might be using a subset. Maybe I return 50 fields, and it only cares about three of those 50 fields. Has anybody ever called an API and didn't use every feature of the API they're called? They called, raise your hand? We've all done that. So what we want to be doing is understanding that the world from the point of view of the consumer is always very much a subset of what the provider offers. Every consumer is going to be wanting something potentially slightly different. It's possible that some consumer will use every single feature of the provider. That's OK. That's allowed. But let's make the assumption that they care about different things. And so what we want to define is this concept of, what is a consumer contract test? Imagine that if your consumers of your API gave you an executable test, if you're writing your code in Java, think they gave me a JUnit test. And I can run this test as part of my CD pipeline, and every time I make a change to the service that I've built, I can run my consumers' tests. And if I break any of them, I would know right away that I broke my consumer. But what the expectation is that my consumer is only going to test the things that they use. So if I call one of five operations that are available, I'll test that operation I call. If I care about four of the 20 fields that get returned, I'll check for the four of those 20 fields. So I'm testing things from my point of view as an end user of the API. And that allows us to have a very interesting flow of collaboration, which is referred to as the consumer driven workflow. So I've got a short animation to explain this. So let's say I have my code. And I've got a Git repo for my microservice. In this Git repo, I'm going to have the code that implements my microservice. I'm going to have my provider tests, which are the tests that I write to test my own code, as I should be. And then I'm going to have another directory in my repo. Let's call this one the consumer tests. Oh, there's a typo on mine. So imagine this column right here, not saying code to implement the microservice, but saying this is where my consumer tests go. Sorry, that's a typo on the slide. So what I do is let's say I've got the green team. The green team wants to use this. So what the green team is going to do is they're going to create a test for the API. And they're going to test for my microservice just what they want to use. Then they're going to send me a pull request. And in that pull request, I'm going to take it. And I'm going to put the consumer a contract test inside of my Git repository. So that I can run it as part of my regular development flow. And then the orange team comes along. And they also want to use my API. But they care about something slightly different. They are not using all the fields. So this is represented with the only care about the Pentagon feature, not the triangle in the circle. And they will send me a pull request. And I will put that in my Git repo. So now in my repository, I actually have a collection of all of the consumer tests. Every one of my consumers has told me what they need from me, not by having a conversation and sending me an email, but by sending me a pull request with a test. Who thinks this would be useful in your life? And the contract is going to be as the person who provides the API, my goal in life is not to break my consumers, but I want them to own telling me in an executable format what they need from me. So if we are going to implement this pattern, we probably want to use something like a contract testing framework of some kind. And the job of the contract testing framework is to make it easy to write these contract tests and make it possible to implement the consumer driven contracts workflow. So in the Java world, you'll see technologies like Spring Cloud Contract. This is what we're going to demo today. And other technologies like PACT and other languages that are other consumer driven contract frameworks. So the key thing here is that we want to answer first is, how do I actually represent a contract? Now, I'm going to turn it over to Rashmin. She's going to walk you through a demo on how to do this. All right, thank you, Adi. All right, so for our first demo, we'll be looking at a customer profile service with consumers as loyalty point and recommendation service. And our problem that we're going to solve here is, how can we evolve my producer, which is my customer profile service, without breaking any of its consumer? All right, let's jump to the code. So let's pretend, can you guys see in the back? Everyone, good? All right, so let's pretend I have a contract that has been sent to me by my consumer, loyalty point service. It's sitting in my repo and I need to do a, I need to accept their pull request. So before I do that, let's look at what the contract is saying and if I agree with it. So the contract is saying here that, hey, producer, customer profile service, if I send you a request with username and password, Rashmin in one, two, three, the response that I'm expecting from you are these two fields, user login check status, end points, with gold and 50,000 as the value. So this is what the loyalty point service is expecting from me. I think this is OK. I can do this. So let me accept the pull request. Let's put it under the contracts folder. So as Adith was mentioning, in the producer, you have a common repository, which is my resources contract folder, where I, as a producer, can merge all the contracts that's coming from the consumer. It also makes documentation really easy. So this is in Groovy DSO format. You can write it in YAML. And you can also generate docs from it. Isn't that cool? All right, so now let's see once I've accepted this contract. Let me run my project and see what happens. Let's bring up my console. Looks like it broke. So let's see what happened here. So because I accepted this contract, what you see here is my consumer here is expecting a field called user logging check status. But what I have here is status, so that's not matching. So since I don't have any other contracts, I think that's a valuable change. And I can make that change. And of course, this is a demo. Let's make that change and then see how that works. So I'm just going to rename my field, also rename the getters and setters. OK, all right. Now let's run this again. And hopefully they should build this time. All right, build success. Great. So once the build has been successful, let me show you something. It has also generated a test for me. Isn't that cool? So the verifier plugin on the producer side that I have from the Spring Cloud contract project has not only able me to put my contracts in the repo and make sure I conform to it, but it has also generated, auto-generated a test for me. And this test makes sure, because of this test, my initial implementation broke because the field that I was using was incorrect. Does that make sense? Yeah? All right. So moving on. In summary, what you saw so far, I was on the producer side. And once I accepted the contract coming from the consumer, because I was using the verifier plugin, it was able to verify that my code is validating against the API that the consumers are expecting. And it was also able to generate these tests for me. Back to Avip. Yeah. Any questions so far? So we saw how we can solve the problem with the consumer-driven contract workflow of being able to change the definition of an API for a microservice and then determine whether who we broke and what action we need to take to fix that. The other problem that we have when we want to do microservices at scale is that if I'm going to make a change to the circle microservice and I want to deploy it, as part of my pipeline, how do I run an automated test against the circle microservice? Do I need to first deploy the triangle, the square, the pentagon, and the diamond? If I have to do that, then my pipelines are going to be really complicated. We don't want to, we might be able to test the circle microservice and know that it's working before we actually deploy it with all its dependencies. So this is the how do I test something in isolation? And so there are actually two strategies for doing this. One is to use mocks and the other one is to use stubs. And mocks and stubs are kind of slight variations of the same idea and I kind of want to take a moment to distinguish the two. So when you're building a mock, typical actions are first you create the mock and then as the person writing the test, you set the expectations on the mock. So you say, hey, when I call you and I pass in the username and div, you should come back with a response of 50,000 points status platinum. And then you use that in your test. The key idea here is that every single test first sets up the mock for their needs. And it tends to be the case that you don't make remote calls when mocks are involved. You're typically relying on the programming language and the runtime of the programming language to maybe do something in Java we typically do like byte code generation in order to generate mock implementations. You use tools like Moquito and other frameworks like that to auto-generate the mocks. Stubs, on the other hand, tend to be things that are the same for all tests. So in a stub, I'll make one stub and multiple tests will utilize that. So with a stub, we also tend to be able to do remote calls. So I might actually start up a dummy server. I might use something like WireMock or another technology service virtualization technology. And this way I can actually receive real messages, real HTTP requests, and return canned responses. Who's built a stub by hand in the past? Raise your hand if you've done that. So a few of you have. That's great. And so if we look at this scenario and we say, OK, I got my loyalty point service. It calls a recommendation service, which in turn calls customer profile, which calls order history, which uses a database and makes a call to a main fit. If I want to test the loyalty point service, I don't want to have to, how do I get an on-demand instance of the customer profile service and all its dependencies? So what we'd like to do is instead and say, OK, how about we do this? What if we actually hand coded a customer profile service stub, and then that customer profile service stub, we can deploy that to Cloud Foundry, or we can just run it as part of our test. But the problem with hand coded stubs is that they are tedious to code.  And you're getting surprised that, hey, my tests work for the loyalty point service. What do you mean when I deployed it? It didn't work because the customer profile folks have changed their implementation. And I didn't know that, because I was testing against the hand coded stub that I wrote. And the stub does not test the request over that. Like the stub is going to give us, we want to test it over the network. So what we want to do is this. We want to basically take the contract that we have written, and then we want to generate from that contract a wire mock configuration, which implements what's specified in the contract. Then we can launch wire mock as a server, pick a port number, and make our request to wire mock remotely. And that also gives us the advantage of being able to publish this wire mock configuration into our Maven repository so that we can just depend on it. So what we'll do now is end up in this situation where if I want to write my loyalty point service integration test for my loyalty point service, I'm able to do that. And I'm calling the auto-generated customer profile service stub. And this is going to resolve the problem of keeping it in sync. Because the contracts are being used to generate the tests that the service provider is using to test their code. And the same contracts are being used to generate the stubs. And since the contracts are part of the pipeline of the service provider, I'm going to resolve that problem of using a version of the stub that doesn't actually reflect reality. So this is the combination of being able to generate both is the kind of really key idea here that enables that development workflow. So what should you expect from your contract testing framework? So your contract testing framework should be able to generate the stubs for you. So what we're going to do now is turn it back to Reshmi to show you how this works in Spring Cloud Contract. Thank you. All right. So before we go in to see how the consumer is going to utilize the stub, let's see something. And to review, what we saw so far in the demo was we have a provider, Customer Profile Service. We have an auto-generated test from our verifier plugin. And if you look at the jars that was developed in the target directory, you can see here is the project jar. And you see another thing, which is very interesting, which is the stubs jar. So when I ran my producer using the verifier plugin, what it did, what it created this wiremark configuration as stub.jar, which then was downloaded into my Maven repository. All right. So now let's go back to my, sorry about that, consumer. OK. So this is my consumer. This is one of those green boxes, loyalty point service. What it does is it tries to retrieve the points given the name and the password. It retrieves the point and the status from the Customer Profile Service. You see here I already have a test. Let's run this test and then see what happens. I'm going to run this. Great. So it was successful. Now let's see what happened here. OK. So what you see here is it's telling me I've started a stub server for this project on port 665. And the stub that I have here is the Customer Profile Service Stub, so it's the producer stub. So as a background, the stub runner plugin that I have for my consumer, it does two things. It goes and it downloads the stubs from the producer and makes sure it's available to me. It's running on port 6665 on wiremark server. Then using wiremark, you can also see here this is my request that I've generated. And it's telling me looks like your request is matching and the response that you're expecting is golden 50,000 is also matching. So that means the test that I've written matches with the contract and the stubs that has been generated from the producer. Now let's see what makes this happen on the consumer side. So as I was telling you before, we use stub runners. So if you see this annotation here, add auto configure stub runner. So the moment you have this annotation in your code, you're telling it that, hey, I want it to use my producer, which is my Customer Profile Service Stubs, it's going to run on 6665. And I want to make sure that my tests are conforming to these stubs. So now let's go back. Any questions so far? No? Everything is super clear? All right, great. OK, so what you saw on the consumer side was I wrote a test and I had the add auto configure stub runner as annotations on my test class, which allowed me to do two things. So as part of the stub runner plugin, from the contract, Spring Cloud Contract project, it downloaded the jars with the stubs and I used a class path to be able to verify that. And it also ran these on my Varmock server that then I was able to validate my test again. Right? Yeah, so just going back to taking this step back and saying we showed you a couple of different things that together make it possible to implement this advanced way of testing. And that's the idea that we're going to write the contract once. We're going to write the contract in Groovy. The reason why we want to write the contract in Groovy is having Groovy is very good for making DSLs and it allows us to create contracts that aren't static. They're not just like when you see the string return this result, we could have put a lot of fancy things in there called Java code to help generate the incoming requests and the outgoing responses. We don't have time to show all of that. But the point is we're gonna write the contract once in Groovy. We are going to run it through the SpringCloud contract plugins. Now SpringCloud contract has plugins for Maven. It also has plugins for Gradle. We're gonna expect SpringCloud contract to do two things for us. Number one, we wanted to generate JUnit tests which just run as regular part of our implementation of the microservice to automatically test that we are conforming to our consumers requirements. We are then going to also generate stubs. It's gonna generate stubs for us. We will publish those stub jar files to our Maven repository. So our colleagues that are working on calling our services are able to use right there integration tests just as plain old JUnit tests but just add the annotation at stubrunner to it. And by doing that, it will download from Maven the actual WireMock configuration, launch the WireMock configuration as part of the test. They're just gonna go on local host to the port number that they specified in the stubrunner. And now you have the ability to actually do the two things that we wanted to do which is be able to evolve your API's interface without breaking your consumers and to be able to test things in isolation. So if you think about it, is this going to be a complete replacement for the end-to-end tests? No, you still wanna do that. But what we wanna be able to do is on every commit, we wanna go through the testing pyramid.  And if all of these pass, eventually we're gonna hit an environment where we are in fact doing an end-to-end test to validate that everything works. But let us be able to disqualify and catch errors earlier and have a shorter feedback loop because this is really what this is all about. Absolutely. And just to summarize the whole flow that you saw so far and we tried to keep it really, really simple. So what we saw so far as a developer, what I did was I generated a contract that then it was accepted by the producer. And what this contract did was it mentioned the interaction between the consumer and the API and we used GroovyDSL for that. You can use YAML, config files. And using the contract Maven or Gradle plugin, we then generated the stubs, which were then downloaded and used by your consumer. And the way your consumer used these stubs are using these at-auto-configure stub runner annotation, right? So what this did for me as a consumer, it kind of took away those environmental issues and waiting on the producer to publish it code. I could very well run and test my code against the producer without having to call the real API. Now I'm guessing you all have a CI CD server that's running, right? And you can very well automate all of these things. And Sprint Cloud contract actually starts the wire mob during the test execution and also configures it with the scenario that's specified in the contract for you. And then you can run your test from the consumer side against it. So any questions so far? We are ending, I know we have like less than five minutes. So any questions so far? Yes. Yes, it's available. And you'll see that in the resources slide. Yes. So the question is, is there any tooling that allows you to generate the contracts from your code? And not that I know of with this one. We, like the code that you're generating the contract from would have to be the consumer code. And that's a pretty hard problem to understand how one piece of code is using another one. I think a big value of the contract workflow, the consumer driven contract, it makes it more social. It's leveraging the idea of pull requests, coding as a social activity and it's asking the actual end user to say please take some responsibility and give me a test. It's a way of spreading the testing culture inside of the organization. And it's saying I will reward you in two ways by you taking the time to write the test. Number one is, I will give you, I'll make sure I don't break you as a provider. And number two, I'm gonna make it easier for you to get stops. Yep. Great question. Yeah. Yep. Save it to the contract. Yes, absolutely. And with that, I can see all over time that the contract would become over the contract. Yeah. Because it depends on, is there any solution to follow to modular contract in the way after we use contract saving this contract? Yeah, so let me summarize the question. So the question is an observation that the can, one, can I have dynamic contracts where I have conditional things? Number two is, what if the contracts get so complicated that nobody understands them anymore, right? So the answer to this is yes, because we're using Groovy, there's the concept that your base contract are actually have a base class that you can control and put helper methods in. And like all technologies, you can definitely make spaghetti code with this. So part of the learning process, so we encourage you to keep things simple and like say, hey, consumers, can you please just test what you need? It's easier to have 100 simple contracts and to have one generic contract that does 100 cases, right? Right. So that would be the recommendation there. Right. And another thing is, as you saw the endpoint, right? So you can customize the contract to make sure you're only kind of integrating all the test or all the use cases for one single API call in one contract, right? Just to make sure it's not as convoluted. All right. So before we take any more questions, actually let's finish up. And I know we have a minute. So did you wanna talk about the next features? So I'm gonna say Spring Cloud Contract has a very large project with a ton of features. Like we would have loved to have like five hours to tell you all about it, but we didn't. So we hope that what we've given you today is just a glimpse of what workflow it enables and the motivation to look deeper into it. A lot of the more advanced scenarios we can do it. So just we encourage you to go to the docs. And this is a list of resources that you can head to find more information. So question is in the back? Yes, yeah. Yeah, so I'll... I've seen the video best case actually. So this is a wonderful question. So I wanna repeat it for the video, which is can I write the stubs? Can I get the stubs before the implementer of the microservice has added that feature? And the answer is absolutely yes. So if you think about the idea of TDD, you're supposed to write the test before you write the code, right? And we tend to do that at the level of an individual class or individual small piece of code. Consumer driven contracts actually allow you to do that at the level of your architecture. Some you can describe consumer driven contracts as TDD at the architecture level. So if I'm a consumer and I know that the other team I'm calling the microservice that I'm calling, they haven't had time to implement the feature that I want, but we've had a meeting, we've talked about it. I can specify the contract, get that in and start like writing my own application before they've implemented that feature. And like there is a way, for example, to store all the contracts in a separate repository. There's a lot of variations of this workflow that are refinements, which we didn't have time to talk about, but wonderful question. Thank you. Yeah. Any other questions? I think we're done. We're getting the signal for, we're finished. All right, happy to take more questions offline.


Hello and let's talk about the U.S. elections and specifically the Trump voter. Counting is still on and it's a nail-biting contest. As of shooting of this show, and that same important thing, as of shooting of this show, Joe Biden has egged out a slight advantage in the state of Georgia as well. If he wins Georgia, his part of the presidency seems pretty much certain, but it's still too early to say. Meanwhile, a lot of questions have been raised about the results and the voting. And a key question has been that, how do people still keep voting for Donald Trump? Now we know that people voted for him in large numbers in 2016. At that point, people said this was an aberration, this was just a novelty factor, Trump was an outsider and that was the reason. But four years later, a pandemic later, an economic recession has happened. And despite all this, a lot of people still have voted for Donald Trump. So what really explains the mindset of people who have been voting for him? Who are his core base, so to speak, the hardcore voters who have turned out for Trump, despite all that has happened in the United States? And it's a very important question to understand because there are even some parallels maybe with the case of India as well. We talk to journalists on India's Chakravarthy to find out more. Thank you, Arindu, for joining us. So it's been a chaotic couple of days at least here. Have you also been sort of refreshing continuously on the New York Times and other sites and polls to sort of see what's happening? Yeah, you know, I prefer, I always like to look at what I would call the ideological opponent. So I have been refreshing the Fox News page and interestingly, Fox News has been more aggressive in giving, you know, these electoral votes to Biden than New York Times. So you know about the entire controversy which happened, I think, over Arizona, which the Fox News gave to Biden, even though others did not. And I think New York Times is still not given. No, they haven't. In fact, a lot of liberal commentators are expected surprise. But nonetheless, Trump, especially when we look at the pre-election narrative that was there, of course, Trump was not expected to lose by a landslide or anything. But nonetheless, there was a strong expectation that Trump would not perform well. Of course, there's been the pandemic, there's been the economic downturn because of the pandemic, his polarizing narrative, which and obviously his crude statements, everything that basically, you know, there's been this, but in fact, considering that he's performed pretty well, it's still today is the 6th of November. The election was held on the 3rd and still we have not reached a decision. So are you surprised at what happened? What do you think about it? Personally, I'm not surprised because, you know, in 2016, I was, I believe that Trump is going to win. And, of course, I believe that Trump is going to win based on electoral votes, because obviously there are places where there's a lot of, there are a lot of number of people, but not necessarily translating into electoral, finally, electors. The reason I believed it was because of what the head of Gallup, you know, the guys who do polls had written about the fact that Americans have become poorer over the eight year period. A large number of Americans have become poorer over the eight year Obama administration period and many of them actually are scattered in these blue states, which Democrats have traditionally carried and many of them are whites who will switch to Trump. And Trump is, in a sense, someone who promises Pundralak and Achyuddin in 2016. And again, I think this is a crucial difference that we also see in India, which is the sense that my gain is being restricted by a power elite, which is holding on and that elite is actually on the East Coast in New York, and maybe in California in Los Angeles and New York, Massachusetts, and, you know, Boston, that's the, in the U.S., when one thinks about it. And when we look at India, we talk about the Lutians elite, the Lutians elite has kept India back and they are the people who support the Congress and they are the people who Modi has taught a lesson. But Trump was working on that rhetoric, in my opinion, and successfully and continues to do. Absolutely. Right. So in this context, I think it's still, especially for all of us to sort of, it's still a bit difficult to figure out exactly who the Trump voter is because, I mean, especially in India on social media, there's a lot of jokes, memes are a ton of plenty because the same thing happens with Modi also. But nonetheless, it's also true that both of these figures carry a very strong current of support. In Trump's case, we often tend to underestimate it all the more because of his personality that comes out. So could you maybe take us through, say, what is the kind of composition of people who are actually voting for Trump today? So obviously this is based on the exit polls that were done in 2016 and now in 2020. If you look at it broadly, and I'm looking at the 2020 exit polls, it's going to be updated as it goes on. And we know that Trump's vote has been higher than what the exit polls have predicted. But let's just look at the numbers and we'll see that the core of Trump's vote continues to be whites, right? If you look at white people who make up about 65% of the voters in and these exclude the Latino or the Hispanic whites, there is a category of Hispanic Latino whites who are not counted. If you take all of that, then the population of white people in the U.S. is close to 70, 71%. But you remove that and then you get about 62 to 63 and in terms of turnout and registration of voting, because that's also a crucial thing in the U.S., whites account for about 64, 65%. So that's what the thing looks like. And there, Trump has an overwhelming majority of about 57%.  This is despite that we know that actually whites account for most of the rich people in the U.S. and also most of the people who are graduates, right? So if you look at the U.S., then 44 or 45% of people in the U.S. voters are graduates, right? College graduates, right? Out of that, out of that 45%, about 66 to 70% are white people, right? You would say that that is more or less representative of the population of whites. So yes, that's true, but those who are non-college graduates in the U.S. amongst non-whites tend to be very poor. Those who are whites, but non-college graduates, a chunk of them are still not very poor. So if we look at the breakup in terms of, in terms of popular earnings, then you will see that Trump's biggest support base comes from those who earn more than $100,000 a year. Now $100,000 a year works out to about, I think, 75 lakh rupees a year in Indian money. But if we work it out in terms of what that can buy in the U.S. and compare that, even then it's about 22-25 lakhs a year. So that's in India that is equivalent to a 2 lakh per month salary, which we know is even in India would be a high salary and a 200,000 that goes to an equivalent of 4 lakhs a month salary, right? I'm not taking the actual dollar exchange rate. I'm taking what is called purchasing power, parity, what can be bought in India. So that's the story that the rich whites, but I think Prashant, there's a story hidden inside that as well. And that probably to me is the key of Trump's support, that hidden story. Also, could you elaborate on that as well? Yeah, as you know, the point is that if one looks at two things. One is the college graduate versus the non-college graduate white, right? So obviously those who are college graduates generally tend to be people from better richer families with better access to resources. Maybe even able to take student loans easier than others can. So the family has a better credit score, which is an important thing in the U.S.  He has a 57 percent voter support amongst white people. And Biden gets only 42 percent, which is dramatically different from their final overall vote total, right? So if you look at white college graduates there, both are equal. So Trump and Biden have an equal support. So look at it, overall whites, Trump has a huge gap, right? A 15 point gap. But as soon as you come to college graduates who are about 31 percent or half, about half of all the whites, about, I'll say 45 odd percent of white voters college graduates. So they're even Stevens.   And that translates also into income levels, right? Because I said that if you look at it, if you look at the blunt numbers, then anyone who earns more than $100,000 is more likely to vote for Trump than for Biden, which means that the rich are more conservative. They don't want to pay taxes and stuff like that, which is what conservatives always promise. That's what the Republican Party promises. It opposes giving subsidies to the poor. So that is also something that the rich would like. And therefore, we would assume that that is the kind of support that it gets. But as soon as we break it up between the rich, those in Indian terms, again, I remind the viewers, I don't mean Indian terms that are translated a dollar into rupees. I'm taking rupee into what a dollar can buy and what rupee can buy in real terms, which is purchasing power parity. In Indian terms, if we take those who earn between two lakh rupees a month to four lakh rupees a month, which is rich people in India and pretty rich in the US, well-to-do people in India, amongst them, Trump has a clear, clear greater support because there, again, he has 57%, almost equal to the overall white support he gets, 57% of support. And Biden has only 41%. But as soon as you cross the threshold of that $200,000, which is four lakh, approximately in Indian terms, four lakh rupees a month or more, in absolute dollar terms, $200,000 would work out to about 1.5 crore rupees a year, so about 12 lakh rupees in dollar term per month or more. There, Biden is actually ahead. So the super rich are basically do tend to go for Biden, yes. So here's the thing, the super rich, the 7% super rich are probably in your East Coast states in California sitting there, they don't like Trump. They are still with, they want to support the Democrats and it would be interesting to see what has happened compared to last year, last election. So this is a crucial gap that we see and in fact, there's a lot of research on the fight between the, within the whites. So this is not only about white supporting Trump. Even if one looks at the breakup of those who are white Christians, most whites would be Christians or Jews, those who are what are called, and this you would probably be better able to explain to our viewers who these people are. These are the white evangelical and white born again Christians. So, you know, amongst them and they account for 27% of overall population, which leaves about, I would say about 38 odd percent as non-evangelical, non-born again Christian whites, right? So if one takes a look at that, then again, it's broadly, approximately about 40% of whites are white evangelical or born again Christians. And these are more conservative, they tend to be in that Bible Belt area here. And they're also very well organized, which is as important because the social and cultural bonds and the structural bonds that keep them together are far more cohesive as opposed to the more traditional churches, which are facing a crisis, so to speak. Yeah. And in fact, that is why probably we see that video of that lady Paula one. And I saw some new video in the morning where there are these people who are counting and outside the electoral, you know, counting centre, right? So they probably are part of that entire process. And it's interesting because it's the same in Brazil also, where Boltona's victory was propelled very, very strongly by the evangelical block, which perhaps played one of the most significant roles in making sure he came to fall. Wow. That is extremely interesting because I think that to a certain extent, even also as a social reason for them to go towards these kind of religious cults, if one could call them. Absolutely. So if one looks at it amongst those people, Trump has a 76% voter base, 76% white evangelical or white born again Christians are not those who go to traditional churches, 76% support. And so if I look at all the whites together, who I said make up 65%. And I take that 65% out of that 65 odd, right? If one looks at it, 37 out of that 65 vote are voting for Trump in any case, right? But out of that 37, 21, 37, you take out 21 are actually these born again or white evangelical or born again Christians. So you're left with just about 16, 16 out of those and there the split would be equal for Trump. So if you look at it, the split actually amongst those who are traditional whites, there, if you take the split, then you actually have a split of 16% to 21%. So the non-evangelical, non-born again Christian space that exists within that even whites, a majority actually support Biden and they do not support Trump. So this is, this again, I don't know much about it. I only have a vague idea about it, but I would assume again, these would be whites in the traditional, more developed, in the East Coast and places like that where the churches still play a role and maybe would might not be actively religious as well. They might be believers, they might be believers, but they're not necessarily actively religious. So this is very interesting to see that how the support is actually broken up exactly like India into those who have a belief or a grievance, not only against the bottom, not only against those they think are not letting them rise or are taking away the pie and therefore they have not gained, but also to the top. So there is this great feeling that there is this elites, this elite which controls everything and they are taking away and exactly that is what that is what Trump played on and played on extremely successfully. Which is also highly ironic considering his own background as a billionaire. Absolutely. Whether he's a billionaire is debatable, but as a big industrialist, a baron, a staple of that same liberal culture as well. He was associated with Hollywood, reality shows, all that kind of stuff. And he was a registered Democrat as always. He suddenly, even I think in 2016 when there was doubt about whether the Republican party would give him the nomination and he was asked in one of the interviews that if you don't get the nomination, will you still fight the elections and he said I'll fight it as an independent. So clearly he has no real love for the Republican party. He knows how to get power and I think the interesting thing is that he has sensed and we see many strands which come together. When you're part of this entire process where you believe that there is an elite which controls everything, then you're more likely to believe conspiracy theories. Those conspiracy theories also get amplified by the Polo whites of the world or Trump himself. So these conspiracy theories that there are these people, there's a deep state which controls everything and you don't know them. They're the freemasons. You see a lot of these documentaries on YouTube, right? There are these people who actually did 9-11 and they blamed Afghanistan for it. There are all these things and they're being done by whites. So all these things come together. The belief in fake news, the ability to spread fake news, right? The belief in a strong leader, the belief that WHO has lied about COVID and this is all rubbish. These are all things that I think closely tied together and there is what I'm trying to argue here is that you see a very similar economic basis for the rise of the right wing in the US as in India because I have always been trying to argue that in India the main thrust, I mean there is always there are alliances that are made but the main thrust, the core of the BJP support base is the new elite, the mercantile elite which had money but never had social capital. It never had prestige. It is the same thing that we're seeing in the US that there is a bulk of people. There is a significant about a quarter or more of the population which earns reasonably well between 100,000 to 200,000 dollars. Most of them would be whites and they support Trump overwhelmingly because they seem to believe that they couldn't cross over to the 200,000 dollar rate because they didn't get a college education. They looked down upon and the white and the elites who also are, there's also this belief that the elites rule not because, not just because they don't have the numbers. So the whites believe white supremacists or those who are sympathetic believe that the elites don't have the numbers. They get the numbers by bringing in people. So they get immigrants in to create and they give them sops and they take our taxes and give it to them and these people then become, they do crimes and all that and therefore the elite gets repeatedly re-elected because they're reducing the space for the core American which is the Bible where it worked. And this is precisely the argument for the CA also, in some senses. Exactly. Exactly. That's precisely the argument for CA. Exactly. You're absolutely right. Absolutely. Sweet. Thank you so much, Anandu, for talking to us. This is definitely a topic we will keep coming back to especially the aspect around India as well because the support base of the Modi wave too needs to be understood in a similar way. Thank you so much. That's all we have time for today. We'll be back on Monday with more news from the country and the world. Until then, keep watching NewsClick.


No one was seriously hurt in a multi-vehicle crash in Park Rapids today, but a semi-truck did cause damage to a bank there. According to the state patrol, the crash happened at 7.50 this morning when the semi struck a couple vehicles at the stop light at the intersection of Highway 34 and 71. The semi, which was eastbound on 34, ended up hitting the side of Northview Bank. No one in the bank was injured. Four vehicles that all were involved in the crash and three of the drivers were treated for minor injuries at St. Joseph's Hospital. If you enjoyed this segment of Lakeland News, please consider making a tax-deductible contribution to Lakeland PBS.


Γεια σας, είναι Vicky εδώ και καταστροφή. Σήμερα θα σας διδάξω ένα καταστροφή και θα χρησιμοποιήσω πρόταξες από την παραδοσία από το Ισάμουνσέ Σταμπ. Η παραδοσία είναι called Gerist και έχει καλύτερος διδάξεις από στάμπες, τένσυλες και πολλές και πολλές προς. Θα σας δείξω κάποιοι εδώ, αλλά θα τα δείξω σε future videos. Για σήμερα θα χρησιμοποιήσω το τένσυλ και θα σας δείξω πώς μπορεί να σας δείξω ένα καταστροφή και ελεγριμένο καταστροφή. Και δείξω πώς πολύ ελεγριμένο αυτό το τένσυλ. Πιστεύω ότι είναι καλύτερο για να βγει ένα καταστροφή. Έτσι, θα δούμε ένα κριμμα-κάδι εδώ και αυτό θα είναι η καταστροφή μου. Θα το χρησιμοποιήσω 5.5. Θα το χρησιμοποιήσω και τότε θα έχω την καταστροφή μου, η οποία θα είναι ένα καταστροφή που είναι 4.25 x 5.5. Τώρα, την εξαιρετική που θα ήθελα για σήμερα είναι πολύ μονοκροματική και είναι πολύ μονοκροματική και θα μπορούσα να το χρησιμοποιήσω για έναν κρατ-κάδι ή για έναν ακολουθή κάδι. Уζημούσα τη καταστροφή μου αυτό το ταξιτσία, μεγάλη μασική. Πριν το κρατάσετε επίσης, θα με τόπω ένα ρεκταγλί. Για αυτό θα χρησιμοποιήσω ένα ρεκταγλί. Αυτό είναι ένα μονοκροματικό ρεκταγλί που έχει ένα επικομμάτι εποφήления. Θα να βάλω τον τέτολιο χόνι με ένα πίσω του ταίπομου. gonna run it through my die-cutting machine. This is going to ensure that I have a perfect rectangle and at the same time it's going to be slightly smaller than the standard cart and I always like to stick panels on top of my cart bases, but are slightly smaller, so I get a nice border all around my panel and this gives a really finished look. Now these are border dies by торhon. Από το τελευταίο εξαλεγή θα βρεις ελικές δίδες στον εαυτό που χρησιμοποιώ σε αυτό το βίντεο. Θα σημανωθεί ένα από τους και μπορείτε να δεις τις συγχωρές εδώ, να δώσει μια καλή σκάλωση και ένα σκέφωνο όλος. Εντάξει, θα ασφαλωθώ στο μόνο μου, θα ασφαλωθώ με κάποτα πλωστά. Και θα δώσει τα εξαλεγή για να είναι καλή και σπίτι, θα χρησιμοποιώ το σύστημα του μετακόμου για να ασφαλωθώ ότι είναι καλή σπίτι.  I am planning to use my spatula and apply some paste over the stencil onto my panel and I just want to make sure that everything is going to look neat at the edges.  So this way I am not going to lose that detail. So again I am using lots of masking tape just to make sure that everything is going to be nice and neat and now I am going to place the stencil on top. I am going to make sure that I place the stencil nice and straight at the center of my card and again I am going to use more masking tape to make sure that the stencil is nicely stuck down. To go over my stencil I am going to use this Nouveau Glimmer Paste. It has a beautiful shine, it's full of glitter inside and the color I am using is the Moonstone. I really love this one, I use it again and again and as you can see I am running out, I really need to restock. I am applying the paste with the back of my spatula, I am making sure that I cover up everything and also I am going slowly making sure that I don't lift the stencil since I want to have a nice and neat result. And now for the fun part where I peel off the stencil and see what's underneath. And this came out so pretty, I am going to make a close up look so you can see how beautiful it looks and it's so shiny. Now I need to leave that panel to side and let it dry and I think it took about 10 minutes to dry but you can also use your heat gun to speed up the drying process and it really depends on how thick a layer of paste you have applied. Now I will go ahead and stamp my sentiment so I am now going to work on my card base and I am using the new stamp set by Simon Says Stamp and I have chosen 3 different stamps from this set, the one that says always, the little heart and the word forever. So I am going to place them in a row and I am going for an embossed sentiment so I am using my VersaMarking there, I am going to stamp my sentiment and this is going to be at the very bottom of my card, just making sure that I have applied enough and just to be safe I stamped once more. Well that's the beauty of using a misty. Now I am going to apply my embossing powder and I am using this embossing powder that is called Champagne and it comes from an embossing set by Stampendous. I am going to link you down below to this one, I think it's the perfect color for wedding cards because it's not gold, it's not silver, it's something in between. So anyway, now all I have to do is to stick the panel on top but just to make it more interesting I decided to add a ribbon as well as a little bow. To make everything look nice and neat I am cheating here so instead of tying a bow directly on the panel I am just going to stick the ribbon, secure it at the back, I have a little bit of adhesive tape at the back and then as you can see I have already tied my bow and then I am going to stick that on top of my other ribbon with some glue dudes at the back. So my panel is ready to go, now all I have to do is to stick it on top of my card base just to add a little bit of dimension, I have added some foam tape at the back and I am going to place it down making sure that everything is nice and straight. Now the same design would look really pretty if you worked on white cardstock with silver or gold embossing paste and of course change the color of the sentiment accordingly. And that was the card for today, I hope you had fun and got inspired and if you did don't forget to leave me a comment as well as give me thumbs up on my youtube channel. Don't forget that there is a list of supplies down below in the description area on youtube as well as on my blog. And if you need more inspiration click on any of these two videos and if you haven't subscribed to my channel already make sure to do so because this is the way to tell me that you love my videos and you want to see more. Thank you all for watching.


The next education bill on our list is 106.  I am Chair Cooper. Yeah, please. So you now know how we handle it. If you could probably give us a high level so that we understand broadly what this is trying to accomplish and we should be asking our questions around, you know, the reason you're in here. So the appropriations part of 106. So committee, if you pull out that bill and we'll turn this over to you, Rep. James. Thanks, Chair Hooper. And I know I ought to be succinct and I will be, but I do need to start by telling you a very quick story, which is that in 2019 I traveled to Denver to attend an education policy conference, a national conference with Chair Webb. And I attended a workshop, a presentation on community schools. And it was, it was fascinating and inspiring. And I learned about community schools that had been established all over the country, but mostly in cities. And so I came home and I wrote to the education commission of the states and asked if this work was being done in any rural communities to their knowledge. And got an email back almost immediately saying that a leading example was Molly Stark Elementary in Bennington. So I just thought that was fantastic. And a couple months later, Chair Webb and I went down to visit Molly Stark and on the day we arrived, a truck from the Vermont Food Bank was set up outside and parents and families were walking over together to pick up boxes of fresh produce and recipes. We toured the school and saw a room that had been set aside for a dental chair where a dentist from the community came to volunteer his time to provide basic preventive dental services to students. They had an audiologist on staff to do hearing screenings, not on staff. Again, it was a partnership. They have extended hours at Molly Stark so that working families can drop their children off before school and pick them up later. They do summer camps focused around literacy, academic evenings with parents. I just, I came away so profoundly inspired. And that is a community school. So to walk you briefly through the bill, we're proposing a demonstration grant program that would tap into S or two funds for a three-year program. And we did adjust the date of the bill so that we could fall within the timing that we all just discussed. So eligible SUs or districts that apply would receive funding for three years starting in 21 and then 22 and then September 23. So I understand that we need to talk a little bit more about what obligated means. But our thought was that this would come out of S or two and fund a three-year program for the successful applicants. In order to qualify or apply, you do need to either, you need to hit that 40% mark for the three-year program. You need to hit that 40% mark for free and reduced lunch. So we're looking for, we're looking for schools or districts that have hit a, hit a poverty threshold basically. And the reason that we envision this as a three-year program is that we took testimony from the Learning Policy Institute, which is a leading think tank on this nationally, that it really takes time for a community schools model to take root. You spend a lot of the first year with your community schools coordinator doing a needs assessment, mapping the programs that you might want to bring into the school from your community and taking a look at the unique needs of your families and students. And then you develop a very unique program tailored to your community and your families and your students and start to roll that out in years one, two and three. So this is not something that you can just take off the shelf and install in your school overnight with the flip of the switch. Community schools are, they're unique everywhere that they're implemented. But according to the Learning Policy Institute, every community school has four basic pillars. And there are other pillars you can add, but the key elements are that you offer some sort of expanded learning time or expanded learning opportunities. So at Molly Stark, for example, those extended hours and the summer programs, you integrate student supports. So you bring some of the support systems that your families and students need into the school or find a way to provide easier access to them. So for example, at Molly Stark, the dental chair, you engage families and communities in educational opportunities. So you're really looking for a level of family engagement and you build a collaborative leadership model. So as we envision this, the funds would be used either to hire a community schools coordinator and we've taken extensive testimony. Research shows that designating a person to do this work is key to the success of the program.  So the funds would be used either to hire a community schools coordinator or to designate someone, maybe who's already doing that kind of work to take over that position. According to the bill, I would imagine that maybe about 10 districts would qualify, maybe 12. And again, they would receive that funding for three years of ongoing work unless the AOE finds that they're not, you know, that they're not fulfilling the needs of the grant. Gosh, I think I'm, I think that's an overview. That's a great overview. Thank you. Sure. And you answered one thing I was just wondering about. So you anticipate that there could be 10 to 12 districts who fall within the criteria that you described in the bill, which is basically 40% of the experience, their population experiences for the. No, I should clarify that. So I took a look at the free and reduced lunch stats on the AOE page. I downloaded their spreadsheet. And I did a hand count. And I was like, please don't quote me on this nice number, but there were about, I'm going to say 130 schools. In Vermont that met that criteria. So originally, and the bill has evolved quite a bit through our work with AOE and the V's, as we call them. Initially this bill envisioned single schools applying for the money. So I had thought, okay, they're going to be at least 120 schools that are eligible. And so I decided it might be more effective to allow. And in testimony from the V's, we decided it would probably be more effective and a better bang for the buck on the money to have the district have the program be lodged at the district or even the SU level. So how it's worded now is that you have to have an eligible school in your district in order to apply. And you can see how many districts use contain those 120 eligible schools. Did that make sense. Yes. Thank you. Sure. We had some hands. Reps felt us. Well, it's along those same lines. If I took the 1.529 that you're thinking of appropriating and you divide it by the 330,000 over the three years, that's only 4.6. And I thought you met schools, but maybe you mean a full district. Again, that's, I understand the need that are understand what the purpose is, but again, that's not a very broad reach. I don't believe. So it's 1.529 per year. So per year, per year. Okay. So, and again, this is, you know, this is as bills evolve. The original thought. That the money would be used. Only to hire a coordinator. And I worked with. The NEA. And you figured that. That that would hire. 10, I think the math was that we would hire 10 coordinators, 10 schools, and then there was set aside money for the AOE. So as we shifted the idea sort of later in our testimony. To allow the funds to also be used to maybe designate a coordinator and implement the program. It became a little bit more that the AOE might have a little bit more flexibility that it wouldn't be quite so rigid. So I could see, for example, one SU coming in. With a grant application of 110,000 to hire a coordinator. Let's say that they're starting a little bit more from scratch. So one SU with. Maybe they have three or four eligible schools.  And that's what we're going to use it for. Another SU could maybe come in. We've got somebody already doing this work. We're going to designate them as the coordinator. We might need to raise their salary a little bit. And we might also use the funds within the, within the grant to do X, Y and Z work. And so it became a little bit more flexible. And when the AOE, assuming this bill moves ahead, the AOE I think is going to have to develop grant guidelines. And so we're going to be able to, we're going to be able to, we're going to be able to, we're going to be able to accommodate that flexibility. And it's up to a max of 110,000 per application. And then again, we built in that money for the tech support at the AOE. So it might, it could very well be that if I hauled out my calculator as the bill evolved very quickly in the last couple of days to allow this flexibility that we might need to tinker with the, the amount a little bit. Okay. We need to get the amount right. I think I just got confused. So I need a demonstration grants that are allowed to districts of up to 110,000 a year. Yup. That mean they would receive these for three, up to 110 times three years. Potentially. Okay. So potentially each district could receive 330,000. Over the three year period. Yup. Max. Max. Yeah. And it could be less. The agent. Yeah. The agency of it. Education is going to manage this and is going to look at the request and say, you get this much in. And the other one gets that much, but they have to live inside the proposed appropriation of one point five to nine, which is an annual appropriation over a three year period. And again, I assume that's from the Essars money. Also. Yup. Did I, I was shaking his head. No, who is. Him. All right. Well, you know what, we probably ought to let Brianna show us what she understands this to say the fiscal note, they lay that out clearly. So I see three hands. Are they all questions about how the money works? As opposed to policy questions. Yes. My question goes to, I think the bill only allocates one point five to nine million total. For the once for the three years. And that's the issue. Okay. Okay. So let's figure that out. How about we let Brianna show us the fiscal note and see how pieces come together. We, so Miss Parker, excuse me, Miss Parker. Thank you chair Hooper. Can I go ahead and share my screen with you again if that's all right. So this is for each 106. And I'll go ahead and just jump down here to the fiscal impact. Again, we are looking at using the Essar funds. For FY 22. For the total amount of the appropriation of $1,529,000. And so. From my understanding, this money. Must be appropriated in FY 22. And. To be used over the three year period as the way that I understood that. So. You know, I think that is kind of the span that we're looking at again, kind of raising the question of obligations versus use. So. I don't know if Jim has anything to add to that as well. But I just wanted to say that's my understanding. I understand the language is the same that 1. 1.5 to nine is over the entire three years. Appropriate in fiscal year 22 for a three year period. According to what the bill language says. Okay. And so, Jim, maybe you can tell me then because we've had, and maybe I'm just having a math. Wiring crossing. We have talked quite a bit in committee about. A maximum grant of 110,000 per school. For, you know, 10, 10 to 12 schools. We've most often we've most often talked about 10 schools. Yeah. So we had an email exchange on this recently prompted by conversation with JFO as to how this worked. And so we went back back. Both on the. One or one and one or six with, I believe, it was a chair weapon with you talking about it. It was an operation for over three, over three year period each year. And when I got back from that recently was it's over the three years. So we can change that. But that's where it's drafted now based on those. Um, those email exchanges. That is certainly the way we're reading it. And more importantly, that's the way the fiscal note reads it. So, um, that's a fairly substantial difference. Uh, and. So it looks like there needs to be a conversation about that that is going on. Um, there needs to be a conversation on the bill. Jim. Thank you, Madam chair. Representative James, it, uh, you know, just getting back to the bill itself. Um, And putting aside the discrepancy and the. You know, ongoing funding that's pictured here for three years. Um, it sounds like a, you know, kind of a creative and unique program that could be very beneficial in a few cases. Um, and I think that's a good point. Um, I think that says prove successful. What's the next step? Um, would you then be looking? I mean, what's the sustainable funding? Um, to go beyond the next two or three years. Well, we talked about that, um, in committee, um, Rep Harrison quite a bit. Um, And it's visioned as a, uh, you know, I think that's a good point. Um, I think that's a good point. Um, I think that's a good point. Um, And the idea around that is that when it's over, um, we would have 10, 10, um, programs that would show results. And there's a study do back, um, by the AOE, um, after the first year and after the final year, specifically so that we can take a look at what the outcomes that we've had in the education committee have revolved around. Well, then what? Um, And I think at that point, these programs will have either. You know, shown their worth or not. And a future legislature could take that up if we want to find a sustainable source of funding or, um, the schools that have been involved could take a look at rolling that into their budget. If the voters approve that. Okay. And your committee vote on the bill. Thank you. Okay. Thank you. Yep. Okay. So some work. Representative Jess. Thank you. Thank you. Rep. James. A quick question. How long has Molly Stark been doing this model? Um, you know, I'll have to go back and check the exact date, but I'm going to say. Um, I think it was a long standing model. Um, and we had them into our, um, committee to testify. And, uh, it was work that was started. Actually it was sort of interesting because, um, Doug Racine had been involved in a very, sort of enthusiastic about the establishment of this program at Molly Stark years ago and has been kind of following their, their progress. And so the, the, the, the, the, the, the, the, the program at Molly Stark is long standing. Um, there are some newer programs. Um, for example, that when new ski, they have an in school health center. The school donated the space and doctors come in to provide a health clinic and that's a newer program, you know, a couple of years old. Right. I mean, the reason I asked, please don't, I don't know if it's been a long time because that suggests that the community and other actors involved consider it worth doing. And it has lasted that long, which again, that's a data point of one. And I appreciate that. But I've also attended conferences, not the same one as a matter, but different ones where I've had some very in depth conversation with colleagues from around the country. And I know, for example, the state of New Mexico has been doing some extraordinary work in this area too. And it has ended up decreasing the pressures on social services in the area. And it's a rural impoverished communities. And in their case, they have a large native American population as well. Um, there were simply no dentists period. So I think it's this demonstration project. I'll, I'll be curious to see where this conversation goes, but I think there is a parallel potentially in decreasing pressures on other budgets. But thank you. Yeah. Thanks for pointing that out. That's one of those statistics is in the findings. They've done quite a bit of study work on, on some of the programs in New Mexico. And that was where we received the information that hiring a community schools coordinator is really key to the success of these. And I, I think they showed a social impact ROI of $7 for, for every, for every dollar you invest in hiring a community schools coordinator, you get a $7 net, you know, social impact ROI over time. And another, another program that's very innovative is called something it's in McDowell County, West Virginia. And they have a county wide model with community schools at the heart of it. And that's aimed at, it's basically a county wide economic development and economic recovery program. The entire county is involved social service agencies, businesses, all kinds of nonprofits, and they have the community school model as one impact of an economic revival in that rural county in, in McDowell County, West Virginia. Thank you. Thank you. We bit concerned about time. Representative felt us. Yeah, thank you very much. And I know we're short on time. I'm just a little concerned. In terms of understanding where you believe these, these four pillars of the community school are all great. And, but my, as I read them, I'm thinking my local school district does much of this work. And I think it's a good idea to be ready. Not with one single coordinator, but for instance, you know, there's an event, an expansive after school program and a summer program. There is a social worker who works with the schools, with the families in order to help them with housing and transportation issues and nutrition issues. We don't have a dental clinic at the school. That's for sure. But, and there are people who work, you know, with school programs to get families engaged in the community. So I think that's a good idea. I think that's a good idea. And I think I've done partially at least in my school. And I think quite a bit in my district. I'm wondering how that compares to other districts. I would assume other districts already have. Some very advanced levels of these four elements. Have you discovered that that's not the case? And therefore you want to promote this. With specific funding for it, as opposed to the individual school district doing it on their own. I think that's a good idea. I think that's a good idea. Thanks. Thanks for that. That's a good question. And it is when we talked about, again, with this, with these with the superintendent's association. And the NEA and the principal's association. And I think you can think about it in two ways. And it's why it's good that it's a demonstration grant program. Some of the schools or districts that are already doing this work. They're not, they're not applying for a grant to really turbo charge it, right? To give that work. The sort of impetus they need to take it to the next level. Because I believe, and I think we could, we could easily find testimony that really this is the way schools are evolving. If COVID showed us anything, it's the role that community schools are increasingly playing and providing these kinds of services to families. So you might have a school or a district like yours that wants to apply for this grant. You know, maybe they want to designate a coordinator and take this work to another level. Or we might have schools and I'm sure we do have schools that look at schools like yours and think, wow, we really need to go there. How do we do that? And that would be perhaps a successful applicant that would want to start, you know, maybe they're not as far along as you. So this, this would allow the AOE to consider an application from either. Thank you. Sure. Thank you. Thank you. Representative Yacoboni. I know the time is short and I apologize. This is exciting. It raises a lot of questions. Asking or requiring our accountable care organization to invest in these type of initiatives to help broaden it to address the social determinants of health. But what I wanted to get back to was whether. Did your committee talk about ways in which to collaborate or integrate these kinds of efforts with our parent child centers, with our community action organizations. The prior bill triggered it, but I didn't have time to get involved. We can do wonderful things for children in terms of literacy, in terms of holistic approaches that this is doing. But if they go home to a place where mom and dad. Don't or can't read. The challenge gets a little bit bigger. So how do you try to, how do you try to reach out to the whole family? So that's just a thought that I have. And I don't know if your committee talked about it at all. I'll stop there. I know our chair. We're all anxious. Thank you. We didn't discuss specifically the concept of reaching out to, you know, the parent child centers, but that sort of work is exactly the kind of work that this bill would envision. Nice answer. Well done. Rep James. And again, this is really important work that we could, that we are all interested in and spend hours talking about. And I'm always sorry to appear to give kind of short shrift to important work is, it's just the nature of coming upstairs and walking through this particular set of doors. You mentioned Doug Racine having been involved in following the Molly Stark. I, I have memories of an even more former secretary of the agency of human services, Conn Hogan talking about wanting to make our school, our schools, the locus of these sorts of activities and actually do some of the work that rep Yakovone reference. So there is a long story. Why is history of trying to do this sort of work? So we have, we've surfaced some questions about the funding and how much money was intended to be here. Yeah. Yeah. So representative shy and representative James are going to have conversations and figuring out what that looks like. And we will sort that as we move along. So I, I, I'm not seeing any more questions, but I think we've surfaced the questions we have with regard to the appropriations. And with that we'll say thank you very much for your presentation on this.