seperate draw fg/fg as abstract func