no need to return a new instance after each method. returning self is fine