adding a-star algorithm, still need to clean it up tho