I really dislike how this works.  Hopefully someone will suggest something better later. close #415