finish all functionality basically.