Fully functional, round 1
Pre and Post conditions added