impelement the objective, debug is needed