implemented all
added a data generator