use jquery-ui for most of the functionality