                                  self._config["bottleneck_type"],
                                  self._config["bottleneck_size"],
                                  self._config["bottleneck_norm"])
  
          return KModel(input_, var_x, name="encoder")
  
      def _get_encoder_model(self) -> keras.models.Model:
          """ Return the model defined by the selected architecture.
  
          Returns
 
</s> remove     def _get_encoder_model(self) -> keras.models.Model:
 </s> add     def _get_encoder_model(self) -> tf.keras.models.Model: </s> remove         return KModel(input_, var_x, name=f"fc_{self._side}")
 </s> add         return keras.models.Model(input_, var_x, name=f"fc_{self._side}") </s> remove     def __call__(self) -> keras.models.Model:
 </s> add     def __call__(self) -> tf.keras.models.Model: </s> remove     def __call__(self) -> keras.models.Model:
 </s> add     def __call__(self) -> tf.keras.models.Model: </s> remove     def __call__(self) -> keras.models.Model:
 </s> add     def __call__(self) -> tf.keras.models.Model:
        return keras.models.Model(input_, var_x, name="encoder")
                                  self._config["bottleneck_type"],
                                  self._config["bottleneck_size"],
                                  self._config["bottleneck_norm"])
  
        return keras.models.Model(input_, var_x, name="encoder")
  
      def _get_encoder_model(self) -> keras.models.Model:
          """ Return the model defined by the selected architecture.
  
          Returns
keep keep keep keep replace keep keep keep keep keep
 Updates:
    - Remove clipfaker
    - Add clip to Phaze-A
    - streamline clip to vision only
    - update lib.model.networks
    - Docs and tests update
    - Phaze-A - add option to flatten bottleneck 
plugins/train/model/phaze_a.py