This should pass self as the first parameter to be consistent with other interfaces and simplify the code below.