why `long` here and `Double` below?