Working

_ Fix #391

NOTE: This is not ready for merging yet because I still need to fix couple of things.