2nd cut at self program documentation - wip