some parts of datatypes and protocols added