A few more type classes. Untested code...