Finished all I'm going to do for this learning exercise. It's not perfect, but it works well. May come back to it in the future if there is demand for me to do so, otherwise exercise is complete.