This commit resolves #13, resolves #15 and resolves #16 with almost definite correction ahead