Added a ton of stuff and made the example better