Start taking a stab at making a halfway decent API