make 'print' for optional debug
use assert to make sure the parameters are correct