added more dependancies, update code structure