Copyright (c) 2001 Oleg Kiselyov
Copyright (c) 2003 Martin Gasbichler