update interface, add more state