more astraction layer