(c) 2007-2025 by T. Schneider