implement whole