refactoring
ray picking