changed abs, added concrete implementation