comments added, final version added