fix json tag errors reported by go vet
cleanups and docs

Do not log, but return errors instead.
Add a few docs.
Let the data objects submit themselves
Use new API