main framework complete