Written by Jeremy Andrews (1/2006) Maintainers: - Jeremy Andrews - Alexandr Shvets