simple dependency injection framework