cleanup
fix licenses
fix licenses
fix licenses
level doesn't need to be abstract