use dynamic instead of object