Better direction vector, still some shakiness in implementation