trying to implement data contructors