All functionality implmented and working