Issue #1: frontend implementation