Separated prototype into classes, fixed some blockers