public function isUsable(array $requiredFields = [])
    {
        return array_reduce(
            $requiredFields,
            function ($canBeUsed, $checkableField) {

                return
                    $canBeUsed &&
                    $this->hasField($checkableField) &&
                    (
                        false === $this->getField($checkableField)['required'] ||
                        $this->getFieldValue($checkableField)
                    );
            },
            $this->isEnabled()
        );
    }