diy
add functions