add basic implementations