diff --git a/assets/js/components/ApplyModal.jsx b/assets/js/components/ApplyModal.jsx
index e061da2afeb1a456a3abbe9fa0878d925776b1bb..871614e13a76e76c62e2acb1e8164d605047fb6a 100644
--- a/assets/js/components/ApplyModal.jsx
+++ b/assets/js/components/ApplyModal.jsx
@@ -1,13 +1,14 @@
 import React from 'react';
 import { Icon, Modal, Button, TextArea, Form } from 'semantic-ui-react';
 import ModalAlert from './../components/ModalAlert';
+import Server from './../lib/Server';
 
 export default class ApplyModal extends React.Component {
   static propTypes = {
     data: React.PropTypes.object.isRequired,
     active: React.PropTypes.bool.isRequired,
     buttonTitle: React.PropTypes.string.isRequired,
-    apply: React.PropTypes.func.isRequired,
+    studentId: React.PropTypes.number.isRequired,
   };
 
   constructor(props) {
@@ -36,12 +37,15 @@ export default class ApplyModal extends React.Component {
   });
 
   handleApply = () => {
-    this.load();
-    this.props.apply();
+    this.setState({ load: true });
+    const requestData = { vacancy_id: this.props.data.id, cover_letter: this.state.coverLetter };
+    Server.post(`/students/${this.props.studentId}/applied-vacancies/`, requestData).then(() => {
+      this.modalAlert.open('Pendaftaran Berhasil', 'Pendaftaran anda berhasil direkam. Harap menunggu kabar selanjutnya dari pihak yang terkait\n', this.handleClose);
+      this.setState({ status: 'registered' });
+    }, () => this.modalAlert.open('Pendaftaran Gagal', 'Maaf pendaftaran yang anda lakukan gagal. Harap ulangi pendaftaran atau hubungi administrator\n', this.handleClose),
+    );
   };
 
-  load = () => this.setState({ load: true });
-
   render = () => (
     <Modal
       trigger={<Button primary onClick={this.handleOpen} floated="right">{this.props.buttonTitle}</Button>}
diff --git a/assets/js/components/ApproveModal.jsx b/assets/js/components/ApproveModal.jsx
index b69799ee7e9ddb26fde083df8f89b947f260829b..f775e6c687f347c7b0db8309d92aca9b5e7a1c11 100644
--- a/assets/js/components/ApproveModal.jsx
+++ b/assets/js/components/ApproveModal.jsx
@@ -24,7 +24,7 @@ export default class ApproveModal extends React.Component {
   }
 
   handleOpen = () => this.setState({ modalOpen: true });
-  handleClose = () => this.readApplication() && this.setState({ modalOpen: false });
+  handleClose = () => { this.readApplication(); this.setState({ modalOpen: false }); }
 
   readApplication = () => {
     const data = { status: Applicant.APPLICATION_STATUS.READ };
diff --git a/assets/js/components/CompanyRegisterModal.jsx b/assets/js/components/CompanyRegisterModal.jsx
index 7f1a6b2257a400819382b345c715775d5bb5541e..e2bd6aba6f4fea393dffa98e89d15278319f6286 100644
--- a/assets/js/components/CompanyRegisterModal.jsx
+++ b/assets/js/components/CompanyRegisterModal.jsx
@@ -11,6 +11,7 @@ export default class CompanyRegisterModal extends React.Component {
     super(props);
     /* istanbul ignore next */
     this.handleChange = this.handleChange.bind(this);
+    this.handleFile = this.handleFile.bind(this);
     this.handleSubmit = this.handleSubmit.bind(this);
   }
 
@@ -18,6 +19,11 @@ export default class CompanyRegisterModal extends React.Component {
     this.setState({ [e.target.name]: e.target.value });
   };
 
+  handleFile = (e) => {
+    this.setState({ [e.target.name]: e.target.files[0] });
+    console.log(e.target.files[0]);
+  };
+
 
   handlePassword = (e) => {
     if (e.target.name === 'password') this.passwordField = e.target; else
@@ -34,7 +40,7 @@ export default class CompanyRegisterModal extends React.Component {
 
   handleSubmit = (e) => {
     e.preventDefault();
-
+    console.log(this.state);
     Server.submit('/register/', this.state).then((response) => {
       Storage.set('user-data', response);
       browserHistory.push('/home');
@@ -81,7 +87,7 @@ export default class CompanyRegisterModal extends React.Component {
           <Form.Field required>
             <label htmlFor="logo">Logo</label>
             <Input
-              onChange={this.handleChange}
+              onChange={this.handleFile}
               name="logo"
               icon={{ name: 'attach', circular: true, link: true }}
               placeholder="attach logo"
diff --git a/assets/js/components/Vacancy.jsx b/assets/js/components/Vacancy.jsx
index 6dc9576e5313262dc32bb3685b826f240b651745..830aafa1bd4348c8675e1f1ed85656a94c0d0b6c 100644
--- a/assets/js/components/Vacancy.jsx
+++ b/assets/js/components/Vacancy.jsx
@@ -65,22 +65,12 @@ export default class Vacancy extends React.Component {
     );
   }
 
-  apply = () => {
-    const requestData = { vacancy_id: this.props.data.id, cover_letter: this.state.coverLetter };
-
-    Server.post(`/students/${this.props.studentId}/applied-vacancies/`, requestData).then(() => {
-      this.modalAlert.open('Pendaftaran Berhasil', 'Pendaftaran anda berhasil direkam. Harap menunggu kabar selanjutnya dari pihak yang terkait\n', this.handleClose);
-      this.setState({ status: 'registered' });
-    }, () => this.modalAlert.open('Pendaftaran Gagal', 'Maaf pendaftaran yang anda lakukan gagal. Harap ulangi pendaftaran atau hubungi administrator\n', this.handleClose),
-    );
-  };
-
   generateAction() {
     const applyModal = (<ApplyModal
       active={this.state.status === 'new'}
-      data={{ header: this.props.data.name, description: this.props.data.description }}
+      data={{ header: this.props.data.name, description: this.props.data.description, id: this.props.data.id }}
       buttonTitle="Detail"
-      apply={this.apply}
+      studentId={this.props.studentId}
     />);
 
     const cancelButton = <Button loading={this.state.deleteLoading} floated="right" color="red" onClick={this.openConfirmationModal}>Batal</Button>;
diff --git a/assets/js/components/VacancyList.jsx b/assets/js/components/VacancyList.jsx
index e7765ed3372d8beb43dacab61e7558851b22fda7..49e837bb3c64a46a6e16e99d78e3bdaf2978c1f5 100644
--- a/assets/js/components/VacancyList.jsx
+++ b/assets/js/components/VacancyList.jsx
@@ -1,11 +1,10 @@
 import React from 'react';
-import { Item, Button, Grid } from 'semantic-ui-react';
+import { Item, Button, Grid, Loader } from 'semantic-ui-react';
 import { Link } from 'react-router';
 import Vacancy from './Vacancy';
 import CompanyVacancy from './CompanyVacancy';
 import Server from '../lib/Server';
 import ModalAlert from '../components/ModalAlert';
-import Aplicant from './../components/Applicant';
 
 
 export default class VacancyList extends React.Component {
@@ -25,7 +24,7 @@ export default class VacancyList extends React.Component {
   constructor(props) {
     super(props);
     /* istanbul ignore next */
-    this.state = { vacancies: [], bookmarkList: [], appliedList: [] };
+    this.state = { vacancies: [], bookmarkList: [], appliedList: [], loading: true };
     this.updateStatusList = this.updateStatusList.bind(this);
     this.generateVacancies = this.generateVacancies.bind(this);
     this.checkBookmark = this.checkBookmark.bind(this);
@@ -34,7 +33,7 @@ export default class VacancyList extends React.Component {
     if (this.props.type === 'student') {
       this.updateStatusList();
     } else Server.get(this.props.url, false).then((data) => {
-      this.setState({ vacancies: data });
+      this.setState({ vacancies: data, loading: false });
     });
   }
 
@@ -58,7 +57,7 @@ export default class VacancyList extends React.Component {
     }).then(() => Server.get(`/students/${this.props.userId}/applied-vacancies/`, false).then((data) => {
       this.setState({ appliedList: data });
     })).then(() => Server.get(this.props.url, false).then((data) => {
-      this.setState({ vacancies: data });
+      this.setState({ vacancies: data, loading: false });
     }));
   }
 
@@ -111,6 +110,7 @@ export default class VacancyList extends React.Component {
 
   render = () => (
     <div>
+      <Loader active={this.state.loading} />
       <ModalAlert ref={(modal) => { this.modalAlert = modal; }} />
       <Grid container columns="eleven" doubling>
         { this.companyHeader() }