major refactor, added in product basics