add and improve some classes