Credits to Eds Danny for some of the work.