pattern builder and less assumptions