add adapter pattern
update