finished code, needs animation