diff --git a/client/changelist/file_changelist.go b/client/changelist/file_changelist.go
index fe9fdbea13..a25215482c 100644
--- a/client/changelist/file_changelist.go
+++ b/client/changelist/file_changelist.go
@@ -46,6 +46,7 @@ func getFileNames(dirName string) ([]os.FileInfo, error) {
 		}
 		fileInfos = append(fileInfos, f)
 	}
+	sort.Sort(fileChanges(fileInfos))
 	return fileInfos, nil
 }
 
@@ -70,7 +71,6 @@ func (cl FileChangelist) List() []Change {
 	if err != nil {
 		return changes
 	}
-	sort.Sort(fileChanges(fileInfos))
 	for _, f := range fileInfos {
 		c, err := unmarshalFile(cl.dir, f)
 		if err != nil {
@@ -98,7 +98,6 @@ func (cl FileChangelist) Remove(idxs []int) error {
 	if err != nil {
 		return err
 	}
-	sort.Sort(fileChanges(fileInfos))
 	remove := make(map[int]struct{})
 	for _, i := range idxs {
 		remove[i] = struct{}{}
@@ -115,6 +114,7 @@ func (cl FileChangelist) Remove(idxs []int) error {
 }
 
 // Clear clears the change list
+// N.B. archiving not currently implemented
 func (cl FileChangelist) Clear(archive string) error {
 	dir, err := os.Open(cl.dir)
 	if err != nil {
@@ -143,7 +143,6 @@ func (cl FileChangelist) NewIterator() (ChangeIterator, error) {
 	if err != nil {
 		return &FileChangeListIterator{}, err
 	}
-	sort.Sort(fileChanges(fileInfos))
 	return &FileChangeListIterator{dirname: cl.dir, collection: fileInfos}, nil
 }
 
diff --git a/cmd/notary/tuf.go b/cmd/notary/tuf.go
index ee5c798ff3..99113c847a 100644
--- a/cmd/notary/tuf.go
+++ b/cmd/notary/tuf.go
@@ -98,8 +98,8 @@ type tufCommander struct {
 	output string
 	quiet  bool
 
-	changes           []int
-	resetStatus       bool
+	deleteIdx         []int
+	reset             bool
 	archiveChangelist string
 }
 
@@ -109,8 +109,8 @@ func (t *tufCommander) AddToCommand(cmd *cobra.Command) {
 	cmd.AddCommand(cmdTUFInit)
 
 	cmdStatus := cmdTUFStatusTemplate.ToCommand(t.tufStatus)
-	cmdStatus.Flags().IntSliceVarP(&t.changes, "unstage", "u", nil, "Numbers of changes to delete, as show in status list")
-	cmdStatus.Flags().BoolVar(&t.resetStatus, "reset", false, "Reset the changelist for the GUN by deleting all pending changes")
+	cmdStatus.Flags().IntSliceVarP(&t.deleteIdx, "unstage", "u", nil, "Numbers of changes to delete, as show in status list")
+	cmdStatus.Flags().BoolVar(&t.reset, "reset", false, "Reset the changelist for the GUN by deleting all pending changes")
 	cmd.AddCommand(cmdStatus)
 
 	cmd.AddCommand(cmdTUFPublishTemplate.ToCommand(t.tufPublish))
@@ -448,12 +448,12 @@ func (t *tufCommander) tufStatus(cmd *cobra.Command, args []string) error {
 		return err
 	}
 
-	if t.resetStatus {
+	if t.reset {
 		return cl.Clear(t.archiveChangelist)
 	}
 
-	if len(t.changes) > 0 {
-		return cl.Remove(t.changes)
+	if len(t.deleteIdx) > 0 {
+		return cl.Remove(t.deleteIdx)
 	}
 
 	if len(cl.List()) == 0 {
diff --git a/cmd/notary/tuf_test.go b/cmd/notary/tuf_test.go
index be2d5647ff..81fc351501 100644
--- a/cmd/notary/tuf_test.go
+++ b/cmd/notary/tuf_test.go
@@ -3,8 +3,11 @@ package main
 import (
 	"net/http"
 	"net/http/httptest"
+	"os"
 	"testing"
 
+	"github.com/spf13/cobra"
+	"github.com/spf13/viper"
 	"github.com/stretchr/testify/require"
 )
 
@@ -118,3 +121,58 @@ func TestAdminTokenAuthNon200Non401Status(t *testing.T) {
 	require.NoError(t, err)
 	require.Nil(t, auth)
 }
+
+func TestStatusUnstageAndReset(t *testing.T) {
+	setUp(t)
+	tempBaseDir := tempDirWithConfig(t, "{}")
+	defer os.RemoveAll(tempBaseDir)
+
+	tc := &tufCommander{
+		configGetter: func() (*viper.Viper, error) {
+			v := viper.New()
+			v.SetDefault("trust_dir", tempBaseDir)
+			return v, nil
+		},
+	}
+
+	tc.reset = true
+
+	// run a reset with an empty changelist and make sure it succeeds
+	err := tc.tufStatus(&cobra.Command{}, []string{"gun"})
+	require.NoError(t, err)
+
+	// add some targets
+	tc.sha256 = "88b76b34ab83a9e4d5abe3697950fb73f940aab1aa5b534f80cf9de9708942be"
+	err = tc.tufAddByHash(&cobra.Command{}, []string{"gun", "test1", "100"})
+	require.NoError(t, err)
+	tc.sha256 = "4a7c203ce63b036a1999ea74eebd307c338368eb2b32218b722de6c5fdc7f016"
+	err = tc.tufAddByHash(&cobra.Command{}, []string{"gun", "test2", "100"})
+	require.NoError(t, err)
+	tc.sha256 = "64bd0565907a6a55fc66fd828a71dbadd976fa875d0a3869f53d02eb8710ecb4"
+	err = tc.tufAddByHash(&cobra.Command{}, []string{"gun", "test3", "100"})
+	require.NoError(t, err)
+
+	out, err := runCommand(t, tempBaseDir, "status", "gun")
+	require.NoError(t, err)
+	require.Contains(t, out, "test1")
+	require.Contains(t, out, "test2")
+	require.Contains(t, out, "test3")
+
+	_, err = runCommand(t, tempBaseDir, "status", "gun", "--unstage", "1")
+
+	out, err = runCommand(t, tempBaseDir, "status", "gun")
+	require.NoError(t, err)
+	require.Contains(t, out, "test1")
+	require.NotContains(t, out, "test2")
+	require.Contains(t, out, "test3")
+
+	_, err = runCommand(t, tempBaseDir, "status", "gun", "--reset")
+	require.NoError(t, err)
+
+	out, err = runCommand(t, tempBaseDir, "status", "gun")
+	require.NoError(t, err)
+	require.NotContains(t, out, "test1")
+	require.NotContains(t, out, "test2")
+	require.NotContains(t, out, "test3")
+
+}