implement some missing functionality