Author: Jens Kleineheismann Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.