added docker file
extra refactoring into classes