added some prunning. compiles up to choice