using callableinstead of custom implementations, returning complex object that does nto swallow exceptions