finish add function