hard frontend