acquire timeout and create and destroy callback
add opts.name and improve opts.check
implement basic balancing