re-design to enable scalability, use redis as database and pub/sub message bus