pass self, add os and product