clean up
first function done
initial & last function done