add behavior and interface