added explicit self param