revised and commented changes