added ceil()