implement base features