roughed out the interface