Refactored to use TinyIoc as proof of concept (POC).