Copyright (c) 2017 Lewis McMaster & Juhani Tuovinen