implement issue#1 and issue#2