instantiate with function call instead load