todo update and cleanup