removed dependency on self