some evaluation for type classes, but not completely working yet.