made extensions and langmaps abstract