diff --git a/tableviewproposal.md b/tableviewproposal.md
index 5f59a76..846dae6 100644
--- a/tableviewproposal.md
+++ b/tableviewproposal.md
@@ -1,5 +1,5 @@
# andlabs/ui table view/tree view proposal
-(text in blue is optional)
+(text that looks like this is optional)
```go
type TableView struct {
@@ -20,7 +20,7 @@ type Person struct {
```
Data is displayed using the fmt package's %v rule. The structure must satisfy sync.Locker.
-If one of the members is of type slice of the structure type, then any element of the main slice with a Children whose length is nonzero represents child nodes. For example:
+If one of the members is of type slice of the structure type, then any element of the main slice with a Children whose length is nonzero represents child nodes. For example:
```go
type File struct {
Filename string
@@ -29,12 +29,12 @@ type File struct {
Contents []File
}
```
-In this case, File.Contents specifies children of the parent File.
+In this case, File.Contents specifies children of the parent File.
```go
func NewTableView(initData interface{}) *TableView
```
-Creates a new TableView with the specified initial data. This also determines the data type of the TableView; after this, all accesses to the data are made through the Data field of TableView. NewTableView() panics if initData is nil or not a slice of structures. The slice may be empty. (TODO slice of pointers to structures?) NewTableView() also panics if the structure has more than one possible children field.
+Creates a new TableView with the specified initial data. This also determines the data type of the TableView; after this, all accesses to the data are made through the Data field of TableView. NewTableView() panics if initData is nil or not a slice of structures. The slice may be empty. (TODO slice of pointers to structures?) NewTableView() also panics if the structure has more than one possible children field.
```go
// if trees are not supported
@@ -47,7 +47,7 @@ func (t *TableView) Append(path []int, items ...interface{})
func (t *TableView) InsertBefore(path []int, items ...interface{})
func (t *TableView) Delete(path []int, indices ...int)
```
-Standard methods to manipulate data in the TableView. These methods hold the write lock upon entry and release it upon exit. They panic if any index is invalid. path specifies which node of the tree to append to. If path has length zero, the operation is performed on the top level; if path has length one, the operation is performed on the children of the first entry in the list; and so on and so forth. Each element of path is the index relative to the first item at the level (so []int{4, 2, 1} specifies the fifth entry's third child's second child's children).
+Standard methods to manipulate data in the TableView. These methods hold the write lock upon entry and release it upon exit. They panic if any index is invalid. path specifies which node of the tree to append to. If path has length zero, the operation is performed on the top level; if path has length one, the operation is performed on the children of the first entry in the list; and so on and so forth. Each element of path is the index relative to the first item at the level (so []int{4, 2, 1} specifies the fifth entry's third child's second child's children).
```go
func (t *TableView) Lock()
@@ -68,5 +68,5 @@ func (t *TableView) Select(indices ...[]int)
// or should these be SelectedIndices() and SelectIndices() for consistency?
```
-Methods that act on TableView row selection. These methods hold the read lock on entry and release it on exit. Each entry in the returned slice consists of a path followed by the selected index of the child. A slice of length 1 indicates that a top-level entry has been selected. The slices shall not be of length zero; passing one in will panic. (TODO this means that multiple children node will have a copy of path each; that should be fixed...)
+Methods that act on TableView row selection. These methods hold the read lock on entry and release it on exit. Each entry in the returned slice consists of a path followed by the selected index of the child. A slice of length 1 indicates that a top-level entry has been selected. The slices shall not be of length zero; passing one in will panic. (TODO this means that multiple children node will have a copy of path each; that should be fixed...)