new implementation of methods