a bunch of incomplete functions