basic update loop complete