Change interface to be more flexible