bring ABC code in from older project + extensible version for accelerators