modified implementations