TODO: button code update, but not complete yet.