abstract class for new lenguages