add builder and observer