implement c side of final