more work (incomplete - won't compile)