add more documentations
add func: trach remaining budget