requires ensures working