added self param