a bit more function and clarity