[S03] Done, but need to be refactored