minor changes (if any) to the implementation