initial functionality implemented