a learning exercise, primarily for Go