basic version must be redone later