little abstraction goes a long way