work in progress with exce[tions