type safer operations