refactor building/loading/saving OpenCL kernel
move algorithms into separate folder