broke out the dynamic object into it's own library since I needed it in another project