interface good enough for testing