This will be ugly, defining Units as DataTypes, implementing ErrorType