completes all functionality