added np-completness