whoops, forgot some forward definitions