added predecessor function