add logic function