Style needs a bit of work. but it works