now accepts any object without specific protocol, and test requirements at runtime.