Refactor prototype extending, add deepLevel