Initial port of gpu.cpp - not working yet - if proves too bothersome - revert