todo in abstract\! :O