building out the interface