Move to interface instead of struct