renamed stuff
moved stuff and added typeclasses