abstracted away datatypes vars