cleaned up the interface