shift class started, work done to creating shifts

Moving some general processing to dedicated classes and keeping as much
out of the GUI layer as possible