return instance of self