Large restructure to follow Symfony's bundle pattern