supersedes #11

review @dedoz @Lugzan