loosely following advice learned from handmade hero (http://handmadehero.org/)