Params struct added, comments added to demo, restructured the abstract and derived class