abstract members implementation added