complete with procedure