factory -> adapter