part to independent source file.
接口与实现分离
update to independent version