add the modified implementation