Migrate to new source format and modern packaging