How to build a framework for virality and ensure returning users