remove unnecessary abstract