3 added more semantic goodness