button constructor redesign