semi complete version