"code based" vs "layout based" constructor call