added bishop and did a bit of refactoring around the em code