update
add singleton