fix some cumbersome design