finished basic product functionality