abstract view how function will work