first implementation with forms