add slightly strict type checking
refactoring
refactoring
refactoring
add make_follow