UPDATE:add to do list. going to change the structure of the codes.