renaming this class since we will probably have two different implementations for two different cases