created a basic structure using IoC container to be easy manage dependencies between all classes