add inheritance + message system