public ITask taskForNeed(Need need, Collection<ITask> tasks, double time, Person person, SimulationMap map){
        List<ITask> tasksForNeed = new ArrayList<>();
        for(ITask task: tasks){
            if(task.fulfilledNeed() != null && task.fulfilledNeed().equals(need.name())){
                try{
                    PPlanWrapper.getPlan(map, person, tasks, task);
                    tasksForNeed.add(task);
                }catch(Exception e){
                    LOG.info(task.name() + " has no viable plan");
                }
            }
        }
        LOG.info(tasksForNeed.size() + " possible tasks to fulfill " + need.name());
        return (tasksForNeed.isEmpty()? null: tasksForNeed.get(new Random().nextInt(tasksForNeed.size())));
    }