initial version
completed add check code
complete procedure