public function toArray(bool $bIncludeExtras = true)
    {
        // Sanitize
        $this->adjustDependentFields();

        $aReturn = array_filter($this->aProperties, function($mValue, $strKey) {
            return !empty($mValue) && '-' !== $mValue && (
                in_array($strKey, ['created_at', 'updated_at'])
                || in_array($strKey, self::WEEKDAYS)
                || array_key_exists($strKey, Sked::form()->getFieldDefinitions())
            );
        }, ARRAY_FILTER_USE_BOTH);
        if (isset($aReturn['starts_at']))
            $aReturn['starts_at'] = date('Y-m-d H:i:s', strtotime($aReturn['starts_at']));
        if (isset($aReturn['ends_at']))
            $aReturn['ends_at'] = date('Y-m-d H:i:s', strtotime($aReturn['ends_at']));

        // Include tags?
        if ($bIncludeExtras) {
            $aReturn['tags'] = $this->getTags();
            $aReturn['repeats'] = self::INTERVAL_ONCE !== $aReturn['interval'] ? '1' : null;
        } else {
            unset($aReturn['repeats']);
        }

        return $aReturn;
    }