finished initial functionality