using more features from typescript like references to resolve dependencies