revised version of ethan's blog post