branches spec
branches implementation
add cache setting