implemented ButtonManager improved design