little redisign[not tested]