todo : fix fall through bug