abstracting methods