Author: Ryszard Kacprzyk