move functions over to interface