Copyright (c) 2008-2018, Harald Walker (bitwalker.eu) and contributing developers