implementation facade