finished initial implementations