update post composite pattern