fully functional for frontend interface