add porters alg