finish up basic implementations