implented some stuff