abstracted return type
added next todo