dependencies update, code review and improvements
initial import