integrate cuda. TODO: refactor?