My first try at this. Comments on how to improve are welcome.