working towards elegant unified interface