add proper abstract