puzzle interface and controller