12307130066_XuanYuan_assignment3 (Everything EXCEPT BMImpl)