updated with structures