finished initial implementation