initial work on refactor, add GPU file