fill in missing functions