keyboard: important to be consistent with return types