core implementations added