Implementation that has all functionality.
final stuff before hand in!