Refactor the code, add Etherpad support