diff --git a/ogle/demo/ogler/ogler_test.go b/ogle/demo/ogler/ogler_test.go
index f3640b6..fef5aff 100644
--- a/ogle/demo/ogler/ogler_test.go
+++ b/ogle/demo/ogler/ogler_test.go
@@ -148,12 +148,12 @@
 		prog program.Program
 		err  error
 	)
-	prog, err = client.Run("localhost", traceeBinary)
+	prog, err = client.New("localhost", traceeBinary)
 	if err != nil {
-		log.Fatalf("Run: %v", err)
+		log.Fatalf("New: %v", err)
 	}
 
-	_, err = prog.Run()
+	_, err = prog.Run("some", "arguments")
 	if err != nil {
 		log.Fatalf("Run: %v", err)
 	}
diff --git a/ogle/demo/tracee/main.go b/ogle/demo/tracee/main.go
index a9cf90d..9b44649 100644
--- a/ogle/demo/tracee/main.go
+++ b/ogle/demo/tracee/main.go
@@ -8,6 +8,8 @@
 
 import (
 	"fmt"
+	"log"
+	"os"
 	"time"
 	"unsafe"
 )
@@ -100,6 +102,11 @@
 }
 
 func main() {
+	args := os.Args[1:]
+	expected := []string{"some", "arguments"}
+	if len(args) != 2 || args[0] != expected[0] || args[1] != expected[1] {
+		log.Fatalf("Got command-line args %v, expected %v", args, expected)
+	}
 	for ; ; time.Sleep(2 * time.Second) {
 		bar()
 	}
diff --git a/ogle/program/client/client.go b/ogle/program/client/client.go
index 94e4a9d..1eade3a 100644
--- a/ogle/program/client/client.go
+++ b/ogle/program/client/client.go
@@ -25,19 +25,9 @@
 var OgleproxyCmd = "ogleproxy"
 
 // New connects to the specified host using SSH, starts an ogle proxy
-// there, and creates a new program from the specified file with the specified
-// arguments, which include the program name the first argument.
-// The program is created but stops before executing the first instruction,
-// ready for debugging.
-func New(host string, textFile string, args ...string) (*Program, error) {
-	panic("unimplemented")
-}
-
-// Run connects to the specified host using SSH, starts an ogle proxy
-// there, and runs a new program from the specified file with the specified
-// arguments, which include the program name the first argument.
-// It is similar to New except that the program is allowed to run.
-func Run(host string, textFile string, args ...string) (*Program, error) {
+// there, and creates a new program from the specified file.
+// The program can then be started by the Run method.
+func New(host string, textFile string) (*Program, error) {
 	// TODO: add args.
 	cmdStrs := []string{"/usr/bin/ssh", host, OgleproxyCmd, "-text", textFile}
 	if host == "localhost" {
@@ -162,12 +152,8 @@
 	return f, nil
 }
 
-func (p *Program) SetArguments(args ...string) {
-	panic("unimplemented")
-}
-
-func (p *Program) Run() (program.Status, error) {
-	req := proxyrpc.RunRequest{}
+func (p *Program) Run(args ...string) (program.Status, error) {
+	req := proxyrpc.RunRequest{args}
 	var resp proxyrpc.RunResponse
 	err := p.client.Call("Server.Run", &req, &resp)
 	if err != nil {
diff --git a/ogle/program/program.go b/ogle/program/program.go
index fc86f46..34b3961 100644
--- a/ogle/program/program.go
+++ b/ogle/program/program.go
@@ -23,20 +23,14 @@
 	// file in the new process.
 	Open(name string, mode string) (File, error)
 
-	// SetArguments sets the command-line arguments for
-	// the next running of the target binary, excluding the
-	// target's binary name. That is, while debugging the
-	// echo command, to prepare a run of "echo hi" call
-	//	SetArguments("hi")
-	SetArguments(args ...string)
-
 	// Run abandons the current running process, if any,
 	// and execs a new instance of the target binary file
 	// (which may have changed underfoot).
 	// Breakpoints and open files are re-established.
 	// The call hangs until the program stops executing,
 	// at which point it returns the program status.
-	Run() (Status, error)
+	// args contains the command-line arguments for the process.
+	Run(args ...string) (Status, error)
 
 	// Stop stops execution of the current process but
 	// does not kill it.
diff --git a/ogle/program/proxyrpc/proxyrpc.go b/ogle/program/proxyrpc/proxyrpc.go
index 18d551f..04b2240 100644
--- a/ogle/program/proxyrpc/proxyrpc.go
+++ b/ogle/program/proxyrpc/proxyrpc.go
@@ -63,6 +63,7 @@
 }
 
 type RunRequest struct {
+	Args []string
 }
 
 type RunResponse struct {
diff --git a/ogle/program/server/server.go b/ogle/program/server/server.go
index 3444a75..1a3ca3e 100644
--- a/ogle/program/server/server.go
+++ b/ogle/program/server/server.go
@@ -267,7 +267,8 @@
 		s.stoppedRegs = syscall.PtraceRegs{}
 		s.topOfStackAddrs = nil
 	}
-	p, err := s.startProcess(s.executable, nil, &os.ProcAttr{
+	argv := append([]string{s.executable}, req.Args...)
+	p, err := s.startProcess(s.executable, argv, &os.ProcAttr{
 		Files: []*os.File{
 			nil,       // TODO: be able to feed the target's stdin.
 			os.Stderr, // TODO: be able to capture the target's stdout.
