updating declaration macros, removing need for typeid