conventions done, except paintcomponent method