Dependency Injection

Signed-off-by: Yasser Aziza <yasser.aziza@gmail.com>