some more work on the underlying functionality