return null if try one object fails
tweak specs
minor organize code