Credit LightService and Interactor for inspiring this project.