add optional linear scaling