require and provide