base on bdd but more simple and codeless