finished, all methods and functions work and give correct output