refactored web-frontend