revised calculate a bit (still requires other impl)