clean up, impl dynamic struct reader