completed initial functionality