wrote the most of my part ... but still not happy ...