DRY shared logic from rise, drop algorithms