基本实现了动态的功能