More abstract implementations