add missing predecessor function

closes #352