A bit changed and restructured and further testing done.