added further discussion of the implementation choices