added hardware acceleration