This needs to become a toplevel class ;)