add refs
rearrange code