add smart ptr
rearrange files