clean up and dynamic