fix missing cast
output cosmetics, overall runtime
comments
reorder code for readability
always check type of selected surpass object