design and function update