avoid using $.extend