started on APU abstraction layer