added self as first argument to all methods