Refactor the asset factory structure