still need to fix retrieve