added all kinds of stuff from Pragmatic
add more stuff