First very rough pass at making it responsive. There is still much to clean up, but it gives it some responsive behavior.