Threw some resources and patterns together and out came this