all functionality works need to clean/doc code