functionality - initilaize() and terminate()