func BindService(cliConnection plugin.CliConnection, args []string) {
	customParameters := "{}"
	fc := flags.New()
	fc.NewStringFlag("parameters", "c", "Valid JSON object containing service-specific configuration parameters, provided either in-line or in a file. For a list of supported configuration parameters, see documentation for the particular service offering.")
	fc.Parse(args...)
	if fc.IsSet("c") {
		customParameters = fc.String("c")
	}

	appName := fc.Args()[1]
	serviceInstanceName := fc.Args()[2]

	rawOutput, _ := cliConnection.CliCommandWithoutTerminalOutput("curl", fmt.Sprintf("/v3/apps?names=%s", appName))
	apps := V3AppsModel{}
	output := strings.Join(rawOutput, "")
	json.Unmarshal([]byte(output), &apps)

	if len(apps.Apps) == 0 {
		fmt.Printf("App %s not found\n", appName)
		return
	}

	appGuid := apps.Apps[0].Guid

	serviceInstance, err := cliConnection.GetService(serviceInstanceName)
	FreakOut(err)
	serviceInstanceGuid := serviceInstance.Guid

	body := fmt.Sprintf(`{
		"type": "app",
		"relationships": {
			"app": {"guid" : "%s"},
			"service_instance": {"guid": "%s"}
		},
		"data": {
			"parameters": %s
		}
	}`, appGuid, serviceInstanceGuid, customParameters)

	if _, err := cliConnection.CliCommandWithoutTerminalOutput("curl", fmt.Sprintf("/v3/service_bindings"), "-X", "POST", "-d", body); err != nil {
		fmt.Printf("Failed to bind app %s to service instance %s\n", appName, serviceInstanceName)
		return
	}

	fmt.Println("OK")
}