reviewed and edited by Prof. Gabriel