move rest into seperate file