refactoring and files separation
little changes in implementation
go on
go on