rebased 

rebased as requested