cleaned-up current implementation