much different now. inspired by my attempted GO port