implementation of methods