a simplified version with interface ready, start to fill in interface