Refactor so we use simpler structure and include a lot of nice modules