throws asserts added