refactor with Cade