todo: class def