add data and functions