required and optional components are working