basic move functionality, needs more error checking and better timing, and inform some higher level