action.py from client server version, come tweaks already, unit tests
still pass, significantly more work to do yet.