skeletal first implementation