rewrite venue.js to scale better performance wise