added cdd func