i think it's overengeneering :)