first implementations for products