rewrite to eliminate need for external timeout binary